深入理解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语言实现获取主机名根据端口杀死进程
Mar 31 Python
Window10+Python3.5安装opencv的教程推荐
Apr 02 Python
python生成ppt的方法
Jun 07 Python
python中使用psutil查看内存占用的情况
Jun 11 Python
python+opencv实现霍夫变换检测直线
Oct 23 Python
python算法与数据结构之冒泡排序实例详解
Jun 22 Python
浅谈PyQt5中异步刷新UI和Python多线程总结
Dec 13 Python
解决tensorboard多个events文件显示紊乱的问题
Feb 15 Python
Python unittest单元测试框架实现参数化
Apr 29 Python
一文详述 Python 中的 property 语法
Sep 01 Python
5款实用的python 工具推荐
Oct 13 Python
python 监控服务器是否有人远程登录(详细思路+代码)
Dec 18 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下一个阿拉伯数字转中文数字的函数
2007/07/16 PHP
全面解析PHP操作Memcache基本函数
2016/07/14 PHP
CI框架封装的常用图像处理方法(缩略图,水印,旋转,上传等)
2016/11/22 PHP
PHP后期静态绑定之self::限制实例分析
2018/12/21 PHP
基于JQuery的Pager分页器实现代码
2010/07/17 Javascript
JS 实现导航栏悬停效果
2013/09/23 Javascript
js数组的基本用法及数组根据下标(数值或字符)移除元素
2013/10/20 Javascript
jquery datatable后台封装数据示例代码
2014/08/07 Javascript
JavaScript中的console.assert()函数介绍
2014/12/29 Javascript
jQuery实现炫酷的鼠标轨迹特效
2015/02/01 Javascript
JavaScript创建对象的方式小结(4种方式)
2015/12/17 Javascript
深入浅析JavaScript中with语句的理解
2016/05/12 Javascript
JS获取当前页面名称的简单实例
2016/08/19 Javascript
微信小程序 wxapp地图 map详解
2016/10/31 Javascript
jQuery使用bind函数实现绑定多个事件的方法
2017/10/11 jQuery
seajs实现强制刷新本地缓存的方法分析
2017/10/16 Javascript
vue使用better-scroll实现下拉刷新、上拉加载
2018/11/23 Javascript
在vue中使用console.log无效的解决
2020/08/09 Javascript
详解如何在vue+element-ui的项目中封装dialog组件
2020/12/11 Vue.js
JavaScript this关键字的深入详解
2021/01/14 Javascript
python连接MySQL、MongoDB、Redis、memcache等数据库的方法
2013/11/15 Python
Django中更新多个对象数据与删除对象的方法
2015/07/17 Python
Python中内置数据类型list,tuple,dict,set的区别和用法
2015/12/14 Python
Python cookbook(字符串与文本)在字符串的开头或结尾处进行文本匹配操作
2018/04/20 Python
Python获取时间戳代码实例
2019/09/24 Python
python随机生成大小写字母数字混合密码(仅20行代码)
2020/02/01 Python
爱尔兰电子产品购物网站:Komplett.ie
2018/04/04 全球购物
免税水晶:Duty Free Crystal
2019/05/13 全球购物
领导干部培训感言
2014/01/23 职场文书
承诺书格式范文
2014/06/03 职场文书
应届生自荐信
2014/06/30 职场文书
小学综合实践活动总结
2014/07/07 职场文书
大学生实习证明
2015/06/16 职场文书
2015初中团支部工作总结
2015/07/21 职场文书
MySQL安装后默认自带数据库的作用详解
2021/04/27 MySQL
阿里面试Nacos配置中心交互模型是push还是pull原理解析
2022/07/23 Java/Android