深入理解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 爬取微信文章
Jan 30 Python
Python实现单词翻译功能
Jun 06 Python
Python实现PS图像抽象画风效果的方法
Jan 23 Python
python实现图片批量压缩程序
Jul 23 Python
Python 中字符串拼接的多种方法
Jul 30 Python
pyqt5利用pyqtDesigner实现登录界面
Mar 28 Python
Python使用pyserial进行串口通信的实例
Jul 02 Python
如何用python写个模板引擎
Jan 14 Python
pytorch 两个GPU同时训练的解决方案
Jun 01 Python
python cv2图像质量压缩的算法示例
Jun 04 Python
Python 中的Sympy详细使用
Aug 07 Python
python中 .npy文件的读写操作实例
Apr 14 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下获取上个月、下个月、本月的日期(strtotime,date)
2014/02/02 PHP
php创建session的方法实例详解
2015/01/27 PHP
nginx 设置多个站跨域
2021/03/09 Servers
js数字转换为float,取N位小数
2014/02/08 Javascript
利用jquery.qrcode在页面上生成二维码且支持中文
2014/02/12 Javascript
javascript页面上使用动态时间具体实现
2014/03/18 Javascript
JavaScript计算器网页版实现代码分享
2016/07/15 Javascript
JavaScript中removeChild 方法开发示例代码
2016/08/15 Javascript
浅谈时钟的生成(js手写简洁代码)
2016/08/20 Javascript
如何使用Vuex+Vue.js构建单页应用
2016/10/27 Javascript
js返回顶部实例分享
2016/12/21 Javascript
微信小程序 radio单选框组件详解及实例代码
2017/01/10 Javascript
MUI 解决动态列表页图片懒加载再次加载不成功的bug问题
2017/04/13 Javascript
vue-cli3.0配置及使用注意事项详解
2018/09/05 Javascript
微信小程序用户位置权限的获取方法(拒绝后提醒)
2018/11/15 Javascript
nodejs基础之buffer缓冲区用法分析
2018/12/26 NodeJs
小试SVG之新手小白入门教程
2019/01/08 Javascript
JavaScript中的事件与异常捕获详析
2019/02/24 Javascript
vue框架下部署上线后刷新报404问题的解决方案(推荐)
2019/04/03 Javascript
Python脚本简单实现打开默认浏览器登录人人和打开QQ的方法
2016/04/12 Python
Python图算法实例分析
2016/08/13 Python
django2+uwsgi+nginx上线部署到服务器Ubuntu16.04
2018/06/26 Python
详解pandas的外部数据导入与常用方法
2019/05/01 Python
用Python抢火车票的简单小程序实现解析
2019/08/14 Python
Python API自动化框架总结
2019/11/12 Python
python GUI库图形界面开发之PyQt5中QMainWindow, QWidget以及QDialog的区别和选择
2020/02/26 Python
基于Python3.7.1无法导入Numpy的解决方式
2020/03/09 Python
python同时遍历两个list用法说明
2020/05/02 Python
如何利用Python给自己的头像加一个小国旗(小月饼)
2020/10/02 Python
h5页面背景图很长要有滚动条滑动效果的实现
2021/01/27 HTML / CSS
本科生求职简历的自我评价
2013/10/21 职场文书
高中军训第一天感言
2014/03/06 职场文书
业务员的岗位职责
2014/03/15 职场文书
大学应届毕业生求职信
2014/05/24 职场文书
伊索寓言读书笔记
2015/06/30 职场文书
《妈妈别哭,有我在》读后感3篇
2020/01/13 职场文书