深入理解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 分析Nginx访问日志并保存到MySQL数据库实例
Mar 13 Python
python实现的简单抽奖系统实例
May 22 Python
python的keyword模块用法实例分析
Jun 30 Python
Python利用Nagios增加微信报警通知的功能
Feb 18 Python
Tensorflow中的placeholder和feed_dict的使用
Jul 09 Python
python变量赋值方法(可变与不可变)
Jan 12 Python
python3编写ThinkPHP命令执行Getshell的方法
Feb 26 Python
python函数的万能参数传参详解
Jul 26 Python
tensorflow 查看梯度方式
Feb 04 Python
Python数据可视化实现多种图例代码详解
Jul 14 Python
Python中生成ndarray实例讲解
Feb 22 Python
Python实战之实现康威生命游戏
Apr 26 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
在yii中新增一个用户验证的方法详解
2013/06/20 PHP
Laravel Memcached缓存驱动的配置与应用方法分析
2016/10/08 PHP
PHP生成加减算法方式的验证码实例
2018/03/12 PHP
服务端 VBScript 与 JScript 几个相同特性的写法 By shawl.qiu
2007/03/06 Javascript
为EasyUI的Tab标签添加右键菜单的方法
2012/07/14 Javascript
JavaScript基础知识之数据类型
2012/08/06 Javascript
dotopAlert 提示用户需安装播放器的代码
2012/09/17 Javascript
jquery获取元素索引值index()示例
2014/02/13 Javascript
javascript将数字转换整数金额大写的方法
2015/01/27 Javascript
使用jQuery处理AJAX请求的基础学习教程
2016/05/10 Javascript
从vue基础开始创建一个简单的增删改查的实例代码(推荐)
2018/02/11 Javascript
layui导出所有数据的例子
2019/09/10 Javascript
javascript使用Blob对象实现的下载文件操作示例
2020/04/18 Javascript
[08:44]DOTA2发布会群星聚首 我们都是刀塔人
2014/03/21 DOTA
[01:30]我们共输赢 完美世界城市挑战赛开启全新赛季
2019/04/19 DOTA
[05:49]DOTA2-DPC中国联赛 正赛 Elephant vs LBZS 选手采访
2021/03/11 DOTA
零基础写python爬虫之爬虫框架Scrapy安装配置
2014/11/06 Python
Python过滤掉numpy.array中非nan数据实例
2020/06/08 Python
Python在字符串中处理html和xml的方法
2020/07/31 Python
Python中对象的比较操作==和is区别详析
2021/02/12 Python
HTML5标签与HTML4标签的区别示例介绍
2013/07/18 HTML / CSS
C语言笔试集
2012/07/24 面试题
一家外企的面试题目(C/C++面试题,C语言面试题)
2014/03/24 面试题
写给女朋友的道歉信
2014/01/08 职场文书
会计求职信
2014/05/29 职场文书
法制宣传标语
2014/06/23 职场文书
监察局领导班子四风问题整改措施思想汇报
2014/10/05 职场文书
小学生2015教师节演讲稿
2015/03/19 职场文书
2016年领导干部廉政承诺书
2016/03/24 职场文书
工作转正自我鉴定范文
2019/06/21 职场文书
XX部保密工作制度范本
2019/08/27 职场文书
创业计划书之青年旅馆
2019/09/23 职场文书
html+css实现分层金字塔的实例
2021/06/02 HTML / CSS
mybatis中注解与xml配置的对应关系和对比分析
2021/08/04 Java/Android
分享python函数常见关键字
2022/04/26 Python
使用Python获取字典键对应值的方法
2022/04/26 Python