深入理解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根据文件大小打log日志
Oct 09 Python
python实现比较两段文本不同之处的方法
May 30 Python
在Python的Django框架的视图中使用Session的方法
Jul 23 Python
python中的编码知识整理汇总
Jan 26 Python
Python Web框架Tornado运行和部署
Oct 19 Python
Python面向对象class类属性及子类用法分析
Feb 02 Python
几种实用的pythonic语法实例代码
Feb 24 Python
示例详解Python3 or Python2 两者之间的差异
Aug 23 Python
python 使用sys.stdin和fileinput读入标准输入的方法
Oct 17 Python
python查看数据类型的方法
Oct 12 Python
Python numpy线性代数用法实例解析
Nov 15 Python
python中加背景音乐如何操作
Jul 19 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将网址字符串转换成超链接(网址或email)
2010/05/25 PHP
php实现比较两个文件夹异同的方法
2015/06/18 PHP
PHP 7安装调试工具Xdebug扩展的方法教程
2017/06/17 PHP
PHP使用Nginx实现反向代理
2017/09/20 PHP
PHP大文件切割上传功能实例分析
2019/07/01 PHP
浅谈laravel5.5 belongsToMany自身的正确用法
2019/10/17 PHP
gearman中任务的优先级和返回状态实例分析
2020/02/27 PHP
自己的js工具 Event封装
2009/08/21 Javascript
js+html5实现的自由落体运动效果代码
2016/01/28 Javascript
js封装tab标签页实例分享
2016/12/19 Javascript
jquery平滑滚动到顶部插件使用详解
2017/05/08 jQuery
利用Angular.js编写公共提示模块的方法教程
2017/05/28 Javascript
D3.js实现简洁实用的动态仪表盘的示例
2018/04/04 Javascript
小程序实现带年月选取效果的日历
2018/06/27 Javascript
JS温故而知新之变量提升和时间死区
2019/01/27 Javascript
Async/Await替代Promise的6个理由
2019/06/15 Javascript
layui实现多图片上传并限制上传的图片数量
2019/09/26 Javascript
基于p5.js 2D图像接口的扩展(交互实现)
2020/11/30 Javascript
[02:49]DOTA2完美大师赛首日观众采访
2017/11/23 DOTA
Python实现端口复用实例代码
2014/07/03 Python
Python实现对比不同字体中的同一字符的显示效果
2015/04/23 Python
Python的组合模式与责任链模式编程示例
2016/02/02 Python
Python Sql数据库增删改查操作简单封装
2016/04/18 Python
Python遍历numpy数组的实例
2018/04/04 Python
django框架自定义用户表操作示例
2018/08/07 Python
python rsa实现数据加密和解密、签名加密和验签功能
2019/09/18 Python
Python3.9 beta2版本发布了,看看这7个新的PEP都是什么
2020/06/10 Python
IE矩阵Matrix滤镜旋转与缩放及如何结合transform
2012/11/29 HTML / CSS
使用Html5多媒体实现微信语音功能
2019/07/26 HTML / CSS
销售所有的狗狗产品:Dog.com
2016/10/13 全球购物
说说在weblogic中开发消息Bean时的persistent与non-persisten的差别
2013/04/07 面试题
《一个中国孩子的呼声》教学反思
2014/02/12 职场文书
个人自我剖析材料
2014/09/30 职场文书
党的群众路线查摆剖析材料
2014/10/10 职场文书
学校领导班子成员查摆问题及整改措施
2014/10/28 职场文书
为自己工作观后感
2015/06/11 职场文书