深入理解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实现监控linux性能及进程消耗性能的方法
Jul 25 Python
python复制列表时[:]和[::]之间有什么区别
Oct 16 Python
python 处理telnet返回的More,以及get想要的那个参数方法
Feb 14 Python
使用Python做定时任务及时了解互联网动态
May 15 Python
python3.4+pycharm 环境安装及使用方法
Jun 13 Python
python使用pip安装SciPy、SymPy、matplotlib教程
Nov 20 Python
Python三元运算与lambda表达式实例解析
Nov 30 Python
python使用ctypes调用扩展模块的实例方法
Jan 28 Python
基于python 将列表作为参数传入函数时的测试与理解
Jun 05 Python
Python包和模块的分发详细介绍
Jun 19 Python
一文搞懂如何实现Go 超时控制
Mar 30 Python
pandas DataFrame.shift()函数的具体使用
May 24 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的header和asp中的redirect比较
2006/10/09 PHP
Smarty使用自定义资源的方法
2015/08/08 PHP
php each 返回数组中当前的键值对并将数组指针向前移动一步实例
2016/11/22 PHP
PHP简单计算两个时间差的方法示例
2017/06/20 PHP
有关JavaScript的10个怪癖和秘密分享
2011/08/28 Javascript
javascript获取ckeditor编辑器的值(实现代码)
2013/11/18 Javascript
Javascript中的Array数组对象详谈
2014/03/03 Javascript
Js操作树节点自动折叠展开的几种方法
2014/05/05 Javascript
js动态创建标签示例代码
2014/06/09 Javascript
浅谈Javascript中Object与Function对象
2015/09/26 Javascript
JavaScript驾驭网页-CSS与DOM
2016/03/24 Javascript
基于JS实现无缝滚动思路及代码分享
2016/06/07 Javascript
微信分享调用jssdk实例
2017/06/08 Javascript
利用JavaScript对中文(汉字)进行排序实例详解
2017/06/18 Javascript
微信小程序文章详情页跳转案例详解
2019/07/09 Javascript
解决vue项目运行npm run serve报错的问题
2020/10/26 Javascript
Python实现简单的代理服务器
2015/07/25 Python
基于windows下pip安装python模块时报错总结
2018/06/12 Python
Python实现的调用C语言函数功能简单实例
2019/03/13 Python
Python 数据可视化pyecharts的使用详解
2019/06/26 Python
浅谈Python3 numpy.ptp()最大值与最小值的差
2019/08/24 Python
Python装饰器原理与基本用法分析
2020/01/07 Python
python 日志 logging模块详细解析
2020/03/31 Python
Python网页解析器使用实例详解
2020/05/30 Python
Canvas绘制浮动球效果的示例
2017/12/29 HTML / CSS
美国牛仔品牌:True Religion
2018/11/16 全球购物
中国领先的汽车保养服务平台:途虎养车
2019/10/18 全球购物
自荐书封面下载
2013/11/29 职场文书
某同学的自我鉴定范文
2013/12/26 职场文书
人事部专员岗位职责
2014/03/04 职场文书
幼儿园中班下学期评语
2014/04/18 职场文书
《毛主席在花山》教学反思
2014/04/20 职场文书
活动总结的格式
2014/05/07 职场文书
环卫个人总结
2015/03/03 职场文书
综合测评个人总结
2015/03/03 职场文书
编写python程序的90条建议
2021/04/14 Python