深入理解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 读写、创建 文件的方法(必看)
Sep 12 Python
Python实现读取并保存文件的类
May 11 Python
python中reload(module)的用法示例详解
Sep 15 Python
pandas中去除指定字符的实例
May 18 Python
python 多线程中子线程和主线程相互通信方法
Nov 09 Python
Python进阶:生成器 懒人版本的迭代器详解
Jun 29 Python
Python爬虫抓取技术的一些经验
Jul 12 Python
Django项目主urls导入应用中views的红线问题解决
Aug 10 Python
python excel转换csv代码实例
Aug 26 Python
Python操作注册表详细步骤介绍
Feb 05 Python
Python获取、格式化当前时间日期的方法
Feb 10 Python
Python Django获取URL中的数据详解
Nov 01 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
关于我转生变成史莱姆这档事:第二季PV上线,萌王2021年回归
2020/05/06 日漫
php和jquery实现地图区域数据统计展示数据示例
2014/02/12 PHP
浅谈php正则表达式中的非贪婪模式匹配的使用
2014/11/25 PHP
php中file_exists函数使用详解
2015/05/08 PHP
详解PHP序列化反序列化的方法
2015/10/27 PHP
round robin权重轮循算法php实现代码
2016/05/28 PHP
Mootools 1.2教程(21)——类(二)
2009/09/15 Javascript
JSON无限折叠菜单编写实例
2013/12/16 Javascript
jquery网页回到顶部效果(图标渐隐,自写)
2014/06/16 Javascript
node.js中的fs.close方法使用说明
2014/12/17 Javascript
js/jquery判断浏览器类型的方法小结
2015/05/12 Javascript
ES6新特征数字、数组、字符串
2016/10/01 Javascript
angular.js指令中的controller、compile与link函数的不同之处
2017/05/10 Javascript
JS实现数组去重方法总结(六种方法)
2017/07/14 Javascript
微信小程序表单验证功能完整实例
2017/12/01 Javascript
如何使用VuePress搭建一个类型element ui文档
2019/02/14 Javascript
layui 中select下拉change事件失效的解决方法
2019/09/20 Javascript
JS实现动态无缝轮播
2020/01/11 Javascript
从零开始在vue-cli4配置自适应vw布局的实现
2020/06/08 Javascript
一文秒懂JavaScript构造函数、实例、原型对象以及原型链
2020/08/25 Javascript
Python enumerate遍历数组示例应用
2008/09/06 Python
python多线程threading.Lock锁用法实例
2014/11/01 Python
Python数据类型之Dict字典实例详解
2019/05/07 Python
python求平均数、方差、中位数的例子
2019/08/22 Python
Python使用扩展库pywin32实现批量文档打印实例
2020/04/09 Python
Python常驻任务实现接收外界参数代码解析
2020/07/21 Python
Clearly新西兰:购买眼镜、太阳镜和隐形眼镜
2018/04/26 全球购物
寒假思想汇报
2014/01/10 职场文书
初婚未育证明
2014/01/15 职场文书
小学家长评语大全
2014/04/16 职场文书
就职演讲稿范文
2014/05/19 职场文书
祖国在我心中演讲稿450字
2014/09/05 职场文书
平安家庭事迹材料
2014/12/20 职场文书
项目经理助理岗位职责
2015/04/13 职场文书
2016年党员创先争优公开承诺书
2016/03/25 职场文书
vue @ ~ 相对路径 路径别名设置方式
2022/06/05 Vue.js