深入理解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删除列表中重复记录的方法
Apr 28 Python
用Python抢过年的火车票附源码
Dec 07 Python
python中子类调用父类函数的方法示例
Aug 18 Python
flask使用session保存登录状态及拦截未登录请求代码
Jan 19 Python
python机器学习理论与实战(五)支持向量机
Jan 19 Python
python字符串string的内置方法实例详解
May 14 Python
pip安装时ReadTimeoutError的解决方法
Jun 12 Python
python数据持久存储 pickle模块的基本使用方法解析
Aug 30 Python
Python使用Pandas库常见操作详解
Jan 16 Python
使用PyQt的QLabel组件实现选定目标框功能的方法示例
May 19 Python
python PyAUtoGUI库实现自动化控制鼠标键盘
Sep 09 Python
Python3如何使用range函数替代xrange函数
Oct 05 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
使用adodb lite解决问题
2006/12/31 PHP
php中通过smtp发邮件的类,测试通过
2007/01/22 PHP
discuz7 phpMysql操作类
2009/06/21 PHP
php 遍历数据表数据并列表横向排列的代码
2009/09/05 PHP
详谈PHP程序Laravel 5框架的优化技巧
2016/07/18 PHP
PHP文件系统管理(实例讲解)
2017/09/19 PHP
PHP实现的杨辉三角求解算法分析
2019/03/11 PHP
jQuery formValidator表单验证插件开源了 含API帮助、源码、示例
2008/08/14 Javascript
Nodejs+express+html5 实现拖拽上传
2014/08/08 NodeJs
Angular ng-repeat 对象和数组遍历实例
2016/09/14 Javascript
纯js实现html转pdf的简单实例(推荐)
2017/02/16 Javascript
微信小程序实现动态设置页面标题的方法【附源码下载】
2017/11/29 Javascript
Vue框架之goods组件开发详解
2018/01/25 Javascript
Node.js 多线程完全指南总结
2019/03/27 Javascript
JavaScript Event Loop相关原理解析
2020/06/10 Javascript
[01:05:07]DOTA2-DPC中国联赛 正赛 DLG vs Dragon BO3 第一场2月1日
2021/03/11 DOTA
python获取网页状态码示例
2014/03/30 Python
用Python实现KNN分类算法
2017/12/22 Python
Python基于列表list实现的CRUD操作功能示例
2018/01/05 Python
python dataframe astype 字段类型转换方法
2018/04/11 Python
python使用PIL和matplotlib获取图片像素点并合并解析
2019/09/10 Python
通过实例了解python property属性
2019/11/01 Python
Django数据结果集序列化并展示实现过程
2020/04/22 Python
详解python定时简单爬取网页新闻存入数据库并发送邮件
2020/11/27 Python
python pillow库的基础使用教程
2021/01/13 Python
苹果美国官方商城:Apple美国
2016/08/24 全球购物
eBay荷兰购物网站:eBay.nl
2020/06/26 全球购物
C#公司笔试题
2014/03/28 面试题
毕业生个人求职自荐信
2014/02/26 职场文书
师恩难忘教学反思
2014/04/27 职场文书
公司人事专员岗位职责
2014/08/11 职场文书
公司奖励通知
2015/04/21 职场文书
舞蹈社团活动总结
2015/05/07 职场文书
2015暑假假期总结
2015/07/13 职场文书
爱国教育主题班会
2015/08/14 职场文书
css3 filter属性的使用简介
2021/03/31 HTML / CSS