深入理解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下自己编写web框架的一些要点
Apr 29 Python
Python创建模块及模块导入的方法
May 27 Python
python数据结构之图的实现方法
Jul 08 Python
Python实现简易版的Web服务器(推荐)
Jan 29 Python
python opencv设置摄像头分辨率以及各个参数的方法
Apr 02 Python
python使用Matplotlib画条形图
Mar 25 Python
在scrapy中使用phantomJS实现异步爬取的方法
Dec 17 Python
python 提取文件指定列的方法示例
Aug 07 Python
简单了解为什么python函数后有多个括号
Dec 19 Python
pandas实现excel中的数据透视表和Vlookup函数功能代码
Feb 14 Python
利用Python的folium包绘制城市道路图的实现示例
Aug 24 Python
Django实现WebSocket在线聊天室功能(channels库)
Sep 25 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临时文件的安全性分析
2014/07/04 PHP
PHP文件锁函数flock()详细介绍
2014/11/18 PHP
PHP正则获取页面所有图片地址
2016/03/23 PHP
Codeigniter里的无刷新上传的实现代码
2019/04/14 PHP
js几个不错的函数 $$()
2006/10/09 Javascript
Javascript异步表单提交,图片上传,兼容异步模拟ajax技术
2010/05/10 Javascript
javascript cookie操作类的实现代码小结附使用方法
2010/06/02 Javascript
使用js判断数组中是否包含某一元素(类似于php中的in_array())
2013/12/12 Javascript
jquery动画效果学习笔记(8种效果)
2015/11/13 Javascript
jQuery实现选项卡切换效果简单演示
2015/12/09 Javascript
jQuery插件之Tocify动态节点目录菜单生成器附源码下载
2016/01/08 Javascript
Vue.js报错Failed to resolve filter问题的解决方法
2016/05/25 Javascript
BootStrap 附加导航组件
2016/07/22 Javascript
jQuery实现自动调用和触发某个事件的方法
2016/11/18 Javascript
JS数组排序方法实例分析
2016/12/16 Javascript
addeventlistener监听scroll跟touch(实例讲解)
2017/08/04 Javascript
node内置调试方法总结
2018/02/22 Javascript
JS实现的集合去重,交集,并集,差集功能示例
2018/03/13 Javascript
js构建二叉树进行数值数组的去重与优化详解
2018/03/26 Javascript
基于element-ui组件手动实现单选和上传功能
2018/12/06 Javascript
bootstrap-table实现表头固定以及列固定的方法示例
2019/03/07 Javascript
每周一练 之 数据结构与算法(Stack)
2019/04/16 Javascript
Python迭代用法实例教程
2014/09/08 Python
解决pandas使用read_csv()读取文件遇到的问题
2018/06/15 Python
详解通过API管理或定制开发ECS实例
2018/09/30 Python
总结Python图形用户界面和游戏开发知识点
2019/05/22 Python
python 实现12bit灰度图像映射到8bit显示的方法
2019/07/08 Python
pycharm无法导入本地模块的解决方式
2020/02/12 Python
python GUI库图形界面开发之PyQt5美化窗体与控件(异形窗体)实例
2020/02/25 Python
python神经网络编程实现手写数字识别
2020/05/27 Python
建筑公司文秘岗位职责
2013/11/29 职场文书
医校毕业生自我鉴定
2014/01/25 职场文书
某某同志考察材料
2014/05/28 职场文书
省级优秀毕业生主要事迹
2014/05/29 职场文书
小学爱国卫生月活动总结
2014/06/30 职场文书
交警失职检讨书
2015/01/26 职场文书