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 Web开发模板引擎优缺点总结
May 06 Python
初步介绍Python中的pydoc模块和distutils模块
Apr 13 Python
Python查找函数f(x)=0根的解决方法
May 07 Python
解析Python中的二进制位运算符
May 13 Python
深入解答关于Python的11道基本面试题
Apr 01 Python
浅谈python下含中文字符串正则表达式的编码问题
Dec 07 Python
python将list转为matrix的方法
Dec 12 Python
python 与服务器的共享文件夹交互方法
Dec 27 Python
使用Python的networkx绘制精美网络图教程
Nov 21 Python
tensorflow模型保存、加载之变量重命名实例
Jan 21 Python
Python基于百度AI实现OCR文字识别
Apr 02 Python
Python中itertools库的四个函数介绍
Apr 06 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
如何分别全角和半角以避免乱码
2006/10/09 PHP
php实现自动获取生成文章主题关键词功能的深入分析
2013/06/03 PHP
php通过array_shift()函数移除数组第一个元素的方法
2015/03/18 PHP
如何使用php脚本给html中引用的js和css路径打上版本号
2015/11/18 PHP
微信 getAccessToken方法详解及实例
2016/11/23 PHP
PHP数据库操作四:mongodb用法分析
2017/08/16 PHP
JS 巧妙获取剪贴板数据 Excel数据的粘贴
2009/07/09 Javascript
JavaScript 密码强度判断代码
2009/09/05 Javascript
指定位置如果有图片显示图片,无图片显示广告的JS
2010/06/05 Javascript
Jquery 监视按键,按下回车键触发某方法的实现代码
2014/05/11 Javascript
JavaScript function函数种类详解
2016/02/22 Javascript
JS控制静态页面之间传递参数获取参数并应用的简单实例
2016/08/10 Javascript
JavaScript字符串对象
2017/01/14 Javascript
jquery mobile实现可折叠的导航按钮
2017/03/11 Javascript
nodejs开发——express路由与中间件
2017/03/24 NodeJs
bootstrap模态框弹出和隐藏,动态改变中间内容的实例
2018/08/10 Javascript
详解JS浏览器事件循环机制
2019/03/27 Javascript
vue实现手机号码的校验实例代码(防抖函数的应用场景)
2019/09/05 Javascript
[36:05]完美世界DOTA2联赛循环赛 Forest vs DM 第一场 11.06
2020/11/06 DOTA
详解python中的线程
2018/02/10 Python
对numpy 数组和矩阵的乘法的进一步理解
2018/04/04 Python
django启动uwsgi报错的解决方法
2018/04/08 Python
python tools实现视频的每一帧提取并保存
2020/03/20 Python
Cython编译python为so 代码加密示例
2019/12/23 Python
Python气泡提示与标签的实现
2020/04/01 Python
Keras中的两种模型:Sequential和Model用法
2020/06/27 Python
用css3实现当鼠标移进去时当前亮其他变灰效果
2014/04/08 HTML / CSS
HTML5实现自带进度条和滑块滑杆效果
2018/04/17 HTML / CSS
美国著名手表网站:Timepiece
2017/11/15 全球购物
你的创业计划书怎样才能打动风投
2014/02/06 职场文书
大学生个人实习的自我评价
2014/02/15 职场文书
公开承诺书格式
2014/05/21 职场文书
水利局群众路线专题民主生活会发言材料
2014/09/21 职场文书
招标授权委托书样本
2014/09/23 职场文书
市委常委会班子党的群众路线教育实践活动整改方案
2014/10/25 职场文书
2015年党小组工作总结
2015/05/26 职场文书