深入理解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 23 Python
Python中pip安装非PyPI官网第三方库的方法
Jun 02 Python
python简单猜数游戏实例
Jul 09 Python
python下读取公私钥做加解密实例详解
Mar 29 Python
python如何将图片转换为字符图片
Aug 19 Python
Python给图像添加噪声具体操作
Mar 03 Python
Python操作SQLite/MySQL/LMDB数据库的方法
Nov 07 Python
python ffmpeg任意提取视频帧的方法
Feb 21 Python
关于tensorflow softmax函数用法解析
Jun 30 Python
PyQt5-QDateEdit的简单使用操作
Jul 12 Python
python第三方网页解析器 lxml 扩展库与 xpath 的使用方法
Apr 06 Python
python 使用pandas读取csv文件的方法
Dec 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
mysql 中InnoDB和MyISAM的区别分析小结
2008/04/15 PHP
PHP更新购物车数量(表单部分/PHP处理部分)
2013/05/03 PHP
Zend Framework入门教程之Zend_Registry组件用法详解
2016/12/09 PHP
PHP实现找出链表中环的入口节点
2018/01/16 PHP
thinkphp5框架路由原理与用法详解
2020/02/11 PHP
Javascript入门学习资料收集整理篇
2008/07/06 Javascript
Javascript基础教程之for循环
2015/01/18 Javascript
js库Modernizr的介绍和使用
2015/05/07 Javascript
js+css实现的圆角边框TAB选项卡滑动门代码分享(2款)
2015/08/26 Javascript
jquery模拟多级复选框效果的简单实例
2016/06/08 Javascript
详解堆的javascript实现方法
2016/11/29 Javascript
原生JS上传大文件显示进度条 php上传文件代码
2020/03/27 Javascript
vue给input file绑定函数获取当前上传的对象完美实现方法
2017/12/15 Javascript
mongoose更新对象的两种方法示例比较
2017/12/19 Javascript
vue-cli3 项目优化之通过 node 自动生成组件模板 generate View、Component
2019/04/30 Javascript
原生JavaScript实现的无缝滚动功能详解
2020/01/17 Javascript
Python实现按学生年龄排序的实际问题详解
2017/08/29 Python
Python3利用SMTP协议发送E-mail电子邮件的方法
2017/09/30 Python
python实现决策树
2017/12/21 Python
Python找出最小的K个数实例代码
2018/01/04 Python
在Django model中设置多个字段联合唯一约束的实例
2019/07/17 Python
Python Web框架之Django框架文件上传功能详解
2019/08/16 Python
Python PO设计模式的具体使用
2019/08/16 Python
Python 解决火狐浏览器不弹出下载框直接下载的问题
2020/03/09 Python
如何使用Cython对python代码进行加密
2020/07/08 Python
美国高街时尚品牌:OASAP
2016/07/24 全球购物
Windows和Linux动态库应用异同
2016/04/17 面试题
临床护士自荐信
2014/01/31 职场文书
2014学习优秀共产党员先进事迹思想汇报
2014/09/14 职场文书
2014年初中班主任工作总结
2014/11/08 职场文书
一次性工伤赔偿协议书范本
2014/11/25 职场文书
2014年语文教师工作总结
2014/12/18 职场文书
南极大冒险观后感
2015/06/05 职场文书
尼克胡哲观后感
2015/06/08 职场文书
运动会3000米加油稿
2015/07/21 职场文书