深入理解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中何种情况下需要使用断言
Apr 01 Python
Python中动态检测编码chardet的使用教程
Jul 06 Python
Python实现mysql数据库更新表数据接口的功能
Nov 19 Python
Tensorflow实现卷积神经网络的详细代码
May 24 Python
python的常用模块之collections模块详解
Dec 06 Python
python学生管理系统开发
Jan 30 Python
在Pandas中处理NaN值的方法
Jun 25 Python
pandas删除行删除列增加行增加列的实现
Jul 06 Python
python实现多进程通信实例分析
Sep 01 Python
使用opencv将视频帧转成图片输出
Dec 10 Python
解决pymysql cursor.fetchall() 获取不到数据的问题
May 15 Python
python打开音乐文件的实例方法
Jul 21 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抓屏函数实现屏幕快照代码分享
2014/01/02 PHP
jquery.validate分组验证代码
2011/03/17 Javascript
jQuery学习笔记之控制页面实现代码
2012/02/27 Javascript
jQuery.buildFragment使用方法及思路分析
2013/01/07 Javascript
js给onclick赋值传参数的两种方法
2013/11/25 Javascript
JS实现仿雅虎首页快捷登录入口及导航模块效果
2015/09/19 Javascript
js实现浏览器倒计时跳转页面效果
2016/08/12 Javascript
web前端开发upload上传头像js示例代码
2016/10/22 Javascript
ajax分页效果(bootstrap模态框)
2017/01/23 Javascript
Javascript中this关键字指向问题的测试与详解
2017/08/11 Javascript
浅谈vue项目可以从哪些方面进行优化
2018/05/05 Javascript
微信小程序实现下拉刷新动画
2019/06/21 Javascript
Angular8 Http拦截器简单使用教程
2019/08/20 Javascript
将Vue组件库更换为按需加载的方法步骤
2020/05/06 Javascript
[45:38]DOTA2上海特级锦标赛主赛事日 - 1 胜者组第一轮#1Liquid VS Alliance第一局
2016/03/02 DOTA
[01:01:52]DOTA2-DPC中国联赛正赛 iG vs LBZS BO3 第一场 3月4日
2021/03/11 DOTA
Python中让MySQL查询结果返回字典类型的方法
2014/08/22 Python
Python文件操作基本流程代码实例
2017/12/11 Python
JSON文件及Python对JSON文件的读写操作
2018/10/07 Python
python基础知识(一)变量与简单数据类型详解
2019/04/17 Python
通过cmd进入python的实例操作
2019/06/26 Python
Python多重继承之菱形继承的实例详解
2020/02/12 Python
基于 HTML5 的 WebGL 3D 版俄罗斯方块的示例代码
2018/05/28 HTML / CSS
澳大利亚在线购买葡萄酒:The Wine Collective
2020/02/20 全球购物
华为的Java面试题
2014/03/07 面试题
.net软件工程师应聘上机试题
2015/03/10 面试题
应用艺术专业个人的自我评价
2014/01/03 职场文书
四年级下册教学反思
2014/02/01 职场文书
餐厅执行经理岗位职责范本
2014/02/26 职场文书
活动总结书怎么写
2015/05/11 职场文书
交通事故调解协议书
2015/05/20 职场文书
建立共青团委员会的请示
2019/04/02 职场文书
Nginx内网单机反向代理的实现
2021/11/07 Servers
Android超详细讲解组件ScrollView的使用
2022/03/31 Java/Android
python playwright之元素定位示例详解
2022/07/23 Python
JS前端监控采集用户行为的N种姿势
2022/07/23 Javascript