Python中的异常处理相关语句基础学习笔记


Posted in Python onJuly 11, 2016

异常是指因为程序出现了错误而在正常控制流以外采取的行动,其分为两个阶段,第一阶段是引发异常的错误,当系统检测到错误并且意识到异常条件,解释器(也可以是程序员引发异常)会引发一个异常通知前段控制流有错误发生,对异常的处理发生在第二阶段,异常引发后,可以调用很多不同的操作,可以是忽略错误,或是记录错误但不采取任何措施,采取补救措施后终止程序,或是江青问题的影响后设法继续执行程序
 类似Python这样支持引发和处理异常的语言,可以让开发人员在错误发生时不仅有检测错误的能力,还可以采取更可靠的补救措施。
 Python用异常对象(exception object)来表示异常情况,遇到错误后,引发的异常如果未被处理或捕捉,程序会自动调用回溯(Traceback)终止执行

>>> 1/0
Traceback (most recent call last):
 File "", line 1, in
ZeroDivisionError: integer division or modulo by zero
>>>

 
python中的异常
python解释器检测的异常如:
1) NameError: 尝试访问一个未声明的变量
2)ZeroDivisionError: 除数为零
3)SyntaxError:Python语法错误
4)IndexError: 请求的索引超出序列范围
5)KeyError:请求一个不存在的字典关键字
6)IOError: 输入/输出错误
7)AttirbuteError: 尝试访问未知的对象属性
8)TypeError:在内建操作或者函数 应用于错误类型的对象时引发
9)ValueError: 在内建操作或者函数 应用于正确类型的对象,但对该对象引用不合适的值引发
 
由程序员明确触发异常:
raise语句:

raise [someException [, args [, traceback]]]

 
检测和处理异常
异常可以通过try语句来检测,主要有两种实现形式:try-except 和 try-finally:

try-except 语句
定义了进行异常监控的一段代码,并提供了处理异常的机制

try:
  try_suite #进行监控的代码
except Exception[, reason]:
  except_suite #异常处理的代码
[except Exception2[, reson2]:
  except_suite2 # 处理try语句中可能发生的多种异常
[else:
  else_suite #try中语句执行没有异常被检测到
[finally:
  finally_suite #无论如何均会执行]]]

 
try-finally语句
finally方式的语句并不是用来捕捉异常,而是用来维持一致的行为而无论异常是否发生,无论try中是否有异常触发,finally代码段都会被执行

try:
  try:
    try_suite
  except:
    excetp_suite
finally:
  finally_suite

等效于:

try:
  try_suite
except:
  excetp_suite
finally:
  finally_suite

Assert

Python中assert的运用于C语言中的assert()函数相似,
主要功能在于确保程序中的某个条件一定为真时,才能让程序执行,否则终止程序执行并触发AssertionError错误
其可以视为相对高级点的异常处理
语法:

assert expression1, expression2

(不用小括号)
其中,expression1 表示程序继续执行的判断条件,为真则继续,为假则程序终止,并抛出expression2给出的描述信息

>>> a=10
>>> assert a<=10, "Error"
>>> a = 11
>>> assert a<=10, "Error"
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
AssertionError: Error

等价于:

if a>10: raise AssertionError("Error")

说明:
assert语句一般用于程序编写过程中的调试,将其添加到Python源代码中后,未避免影响编译性能,
建议尽量去除assert语句,并将__debug__这个内置变量设置为False,即在运行命令行中添加参数

python -0 test.py

(这其实与C语言中的编译参数-d类似)

Python 相关文章推荐
Python内置函数bin() oct()等实现进制转换
Dec 30 Python
Python3安装Pymongo详细步骤
May 26 Python
python监控文件并且发送告警邮件
Jun 21 Python
python3 实现验证码图片切割的方法
Dec 07 Python
Python自定义一个类实现字典dict功能的方法
Jan 19 Python
对django views中 request, response的常用操作详解
Jul 17 Python
python中sort和sorted排序的实例方法
Aug 26 Python
Python celery原理及运行流程解析
Jun 13 Python
Python和Bash结合在一起的方法
Nov 13 Python
Python基于Socket实现简易多人聊天室的示例代码
Nov 29 Python
Python 实现二叉查找树的示例代码
Dec 21 Python
python drf各类组件的用法和作用
Jan 12 Python
Python编写简单的HTML页面合并脚本
Jul 11 #Python
Python中super()函数简介及用法分享
Jul 11 #Python
Swift中的协议(protocol)学习教程
Jul 08 #Python
Python中多线程的创建及基本调用方法
Jul 08 #Python
使用PyInstaller将Python程序文件转换为可执行程序文件
Jul 08 #Python
Python遍历目录中的所有文件的方法
Jul 08 #Python
Python常用的内置序列结构(列表、元组、字典)学习笔记
Jul 08 #Python
You might like
提示Trying to clone an uncloneable object of class Imagic的解决
2011/10/27 PHP
php操作SVN版本服务器类代码
2011/11/27 PHP
jquery 上下滚动广告
2009/06/17 Javascript
利用javascript数组长度循环数组内所有元素
2013/12/27 Javascript
javascript使用百度地图api和html5特性获取浏览器位置
2014/01/10 Javascript
yui3的AOP(面向切面编程)和OOP(面向对象编程)
2015/05/01 Javascript
js实现时间显示几天前、几小时前或者几分钟前的方法集锦
2015/05/29 Javascript
JS+CSS实现另类带提示效果的竖向导航菜单
2015/10/15 Javascript
jquery获取easyui日期控件的值实现方法
2016/11/09 Javascript
vue.js实现仿原生ios时间选择组件实例代码
2016/12/21 Javascript
JS对象的深度克隆方法示例
2017/03/16 Javascript
基于twbsPagination.js分页插件使用心得(分享)
2017/10/21 Javascript
详解vue-router 初始化时做了什么
2018/06/11 Javascript
微信小程序购物车、父子组件传值及calc的注意事项总结
2018/11/14 Javascript
[55:39]DOTA2-DPC中国联赛 正赛 VG vs LBZS BO3 第二场 1月19日
2021/03/11 DOTA
巧用Python装饰器 免去调用父类构造函数的麻烦
2012/05/18 Python
用Python和MD5实现网站挂马检测程序
2014/03/13 Python
python中模块的__all__属性详解
2017/10/26 Python
python3+PyQt5实现自定义分数滑块部件
2018/04/24 Python
python实现一行输入多个值和一行输出多个值的例子
2019/07/16 Python
python3.7将代码打包成exe程序并添加图标的方法
2019/10/11 Python
python-视频分帧&amp;多帧合成视频实例
2019/12/10 Python
python 实现关联规则算法Apriori的示例
2020/09/30 Python
pymysql模块使用简介与示例
2020/11/17 Python
详解appium自动化测试工具(monitor、uiautomatorviewer)
2021/01/27 Python
SOKOLOV官网:俄罗斯珠宝首饰品牌
2021/01/02 全球购物
专升本个人自我评价
2013/12/22 职场文书
寄语学生的话
2014/04/10 职场文书
新闻工作者先进事迹
2014/05/26 职场文书
兽医医药专业求职信
2014/07/27 职场文书
党的群众路线教育实践活动个人整改措施
2014/10/27 职场文书
事业单位岗位说明书
2015/10/08 职场文书
2019辞职报告范本3篇!
2019/07/23 职场文书
如何用Laravel包含你自己的帮助函数
2021/05/27 PHP
python可视化之颜色映射详解
2021/09/15 Python
MySQL学习必备条件查询数据
2022/03/25 MySQL