深入理解python try异常处理机制


Posted in Python onJune 01, 2016

深入理解python try异常处理机制

#python的try语句有两种风格
#一:种是处理异常(try/except/else)
#二:种是无论是否发生异常都将执行最后的代码(try/finally)

try/except/else风格
try:
  <语句> #运行别的代码
except <名字>: 
  <语句> #如果在try部份引发了'name'异常
except <名字>,<数据>:
  <语句> #如果引发了'name'异常,获得附加的数据
else:
  <语句> #如果没有异常发生
#try的工作原理是,当开始一个try语句后,python就在当前程序的上下文中作标记,这样当异常出现时就可以回到这里,try子句先执行,接下来会发生什么依赖于执行时是否出现异常。
#1、如果当try后的语句执行时发生异常,python就跳回到try并执行第一个匹配该异常的except子句,异常处理完毕,控制流就通过整个try语句(除非在处理异常时又引发新的异常)。
#2、如果在try后的语句里发生了异常,却没有匹配的except子句,异常将被递交到上层的try,或者到程序的最上层(这样将结束程序,并打印缺省的出错信息)。
#3、如果在try子句执行时没有发生异常,python将执行else语句后的语句(如果有else的话),然后控制流通过整个try语句。


try/finally风格
try:
  <语句>
finally:
  <语句> #退出try时总会执行

python总会执行finally子句,无论try子句执行时是否发一异常。
1、如果没有发生异常,python运行try子句,然后是finally子句,然后继续。
2、如果在try子句发生了异常,python就会回来执行finally子句,然后把异常递交给上层try,控制流不会通过整个try语句。
当你想无论是否发生异常都确保执行某些代码时,try/finally是有用的。

#这个在打开文件的时候有用 finally总是在最后close()文件

try 语句子句形式表
except: 捕获所有异常
except name: 只捕获特定的异常
except name,value: 捕获异常和它的附加数据(将异常的信息保存到value,)
except (name1,name2): 捕获任何列出的异常
else: 如果没有异常
finally: 总是执行

>>> try:
  f = open('file.txt')
except IOError, e:
  print e
else:
    print 'wrong'

    
[Errno 2] No such file or directory: 'file.txt'

最新的python版本 支持try/except/finally

try: 1:如果x没有异常,执行z,i
  x 2:如果x有异常, 一:如果except捕捉到异常则执行y,i
except(name): 二:没捕捉到,执行i,然后返回内置异常处理 
  y
else:
  z
finally:
  i

以上这篇深入理解python try异常处理机制就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python实现的登陆Discuz!论坛通用代码分享
Jul 11 Python
python 远程统计文件代码分享
May 14 Python
matplotlib绘制动画代码示例
Jan 02 Python
python清除函数占用的内存方法
Jun 25 Python
Python迭代器与生成器基本用法分析
Jul 26 Python
python3+pyqt5+itchat微信定时发送消息的方法
Feb 20 Python
详解python实现交叉验证法与留出法
Jul 11 Python
Python jieba库用法及实例解析
Nov 04 Python
python实现将json多行数据传入到mysql中使用
Dec 31 Python
如何通过python实现全排列
Feb 11 Python
python 如何把docker-compose.yaml导入到数据库相关条目里
Jan 15 Python
手把手教你用Django执行原生SQL的方法
Feb 18 Python
python学习 流程控制语句详解
Jun 01 #Python
python+Django+apache的配置方法详解
Jun 01 #Python
python中函数默认值使用注意点详解
Jun 01 #Python
Python中基础的socket编程实战攻略
Jun 01 #Python
Google开源的Python格式化工具YAPF的安装和使用教程
May 31 #Python
Python中Collections模块的Counter容器类使用教程
May 31 #Python
Python的Django应用程序解决AJAX跨域访问问题的方法
May 31 #Python
You might like
在PHP中使用模板的方法
2008/05/24 PHP
php中session过期时间设置及session回收机制介绍
2014/05/05 PHP
php中FTP函数ftp_connect、ftp_login与ftp_chmod用法
2014/11/18 PHP
PHP rsa加密解密算法原理解析
2020/12/09 PHP
深入解析JavaScript中的变量作用域
2013/12/06 Javascript
使用jQuery实现图片遮罩半透明坠落遮挡
2015/03/16 Javascript
jquery实现动态改变div宽度和高度
2015/05/08 Javascript
JS实现带缓冲效果打开、关闭、移动一个层的方法
2015/05/09 Javascript
深入探究使JavaScript动画流畅的一些方法
2015/06/30 Javascript
JavaScript实现的圆形浮动标签云效果实例
2015/08/06 Javascript
逐一介绍Jquery data()、Jquery stop()、jquery delay()函数(详)
2015/11/04 Javascript
js实现html table 行,列锁定的简单实例
2016/10/13 Javascript
Angular.js中angular-ui-router的简单实践
2017/07/18 Javascript
vue组件生命周期详解
2017/11/07 Javascript
js事件on动态绑定数据,绑定多个事件的方法
2018/09/15 Javascript
node错误处理与日志记录的实现
2018/12/24 Javascript
laypage.js分页插件使用方法详解
2019/07/27 Javascript
如何实现iframe父子传参通信
2020/02/05 Javascript
vue-cli3单页构建大型项目方案
2020/04/07 Javascript
vue-cli3 引入 font-awesome的操作
2020/08/11 Javascript
python2.7删除文件夹和删除文件代码实例
2013/12/18 Python
Python爬虫框架scrapy实现的文件下载功能示例
2018/08/04 Python
解决python中 f.write写入中文出错的问题
2018/10/31 Python
Python 实现输入任意多个数,并计算其平均值的例子
2019/07/16 Python
DJango的创建和使用详解(默认数据库sqlite3)
2019/11/18 Python
python自动化实现登录获取图片验证码功能
2019/11/20 Python
python轮询机制控制led实例
2020/05/03 Python
Python使用configparser读取ini配置文件
2020/05/25 Python
TripAdvisor斯洛伐克:阅读评论、比较价格和酒店预订
2018/04/25 全球购物
极度干燥澳大利亚官方网站:Superdry澳大利亚
2019/03/28 全球购物
小米乌克兰网上商店:Xiaomi.UA
2019/10/29 全球购物
滞留工资返还协议书
2014/10/19 职场文书
信访稳定工作汇报
2014/10/27 职场文书
大学生毕业评语
2014/12/31 职场文书
食堂卫生管理制度
2015/08/04 职场文书
Pytest中conftest.py的用法
2021/06/27 Python