深入理解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实现的二叉树算法和kmp算法实例
Apr 25 Python
Python设计模式之观察者模式实例
Apr 26 Python
python如何重载模块实例解析
Jan 25 Python
python smtplib模块自动收发邮件功能(一)
May 22 Python
python中redis查看剩余过期时间及用正则通配符批量删除key的方法
Jul 30 Python
python程序快速缩进多行代码方法总结
Jun 23 Python
深入了解Python枚举类型的相关知识
Jul 09 Python
Python中调用其他程序的方式详解
Aug 06 Python
安装python及pycharm的教程图解
Oct 10 Python
Django生成数据库及添加用户报错解决方案
Oct 09 Python
Python+unittest+requests+excel实现接口自动化测试框架
Dec 23 Python
Python基础之元编程知识总结
May 23 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
全国FM电台频率大全 - 29 青海省
2020/03/11 无线电
如何使用纯PHP实现定时器任务(Timer)
2015/07/31 PHP
PHP中的正则表达式实例详解
2017/04/25 PHP
php 读写json文件及修改json的方法
2018/03/07 PHP
PHP实现负载均衡下的session共用功能
2018/04/17 PHP
JS类中定义原型方法的两种实现的区别
2007/03/08 Javascript
跨浏览器的 mouseenter mouseleave 以及 compareDocumentPosition的使用说明
2010/05/04 Javascript
jQuery 表单验证扩展(三)
2010/10/20 Javascript
javascript跟随滚动效果插件代码(javascript Follow Plugin)
2013/08/03 Javascript
JS过滤url参数特殊字符的实现方法
2013/12/24 Javascript
javascript中的正则表达式使用指南
2015/03/01 Javascript
AngularJS 与Bootstrap实现表格分页实例代码
2016/10/14 Javascript
基于vue-element组件实现音乐播放器功能
2018/05/06 Javascript
python正则表达式re模块详细介绍
2014/05/29 Python
Python深入学习之闭包
2014/08/31 Python
Python selenium如何设置等待时间
2016/09/15 Python
Python对列表中的各项进行关联详解
2017/08/15 Python
python检索特定内容的文本文件实例
2018/06/05 Python
使用sklearn进行对数据标准化、归一化以及将数据还原的方法
2018/07/11 Python
python3利用Socket实现通信的方法示例
2019/05/06 Python
Python2.7版os.path.isdir中文路径返回false的解决方法
2019/06/21 Python
基于Python的ModbusTCP客户端实现详解
2019/07/13 Python
Jupyter Notebook的连接密码 token查询方式
2020/04/21 Python
python中strip(),lstrip(),rstrip()函数的使用讲解
2020/11/17 Python
浅谈css3新单位vw、vh、vmin、vmax的使用详解
2017/12/01 HTML / CSS
瑜伽国际:Yoga International
2018/04/18 全球购物
电大毕业生自我鉴定
2013/11/10 职场文书
环保专业大学生职业规划设计
2014/01/10 职场文书
小学生安全保证书
2014/02/01 职场文书
摄影展策划方案
2014/06/02 职场文书
六一文艺汇演开幕词
2015/01/29 职场文书
驳回起诉民事裁定书
2015/05/19 职场文书
法人身份证明书
2015/06/18 职场文书
你真的会用Mysql的explain吗
2022/03/31 MySQL
Oracle 多表查询基本语法实例
2022/04/18 Oracle
MySQL控制流函数(-if ,elseif,else,case...when)
2022/07/07 MySQL