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正则表达式介绍
Aug 06 Python
Python中的__slots__示例详解
Jul 06 Python
python简单实现操作Mysql数据库
Jan 29 Python
为什么从Python 3.6开始字典有序并效率更高
Jul 15 Python
python生成随机红包的实例写法
Sep 02 Python
python获取全国城市pm2.5、臭氧等空气质量过程解析
Oct 12 Python
python实现大量图片重命名
Mar 23 Python
Python爬虫爬取糗事百科段子实例分享
Jul 31 Python
python中的垃圾回收(GC)机制
Sep 21 Python
浅谈anaconda python 版本对应关系
Oct 07 Python
python实现一个简单RPC框架的示例
Oct 28 Python
Python调用ffmpeg开源视频处理库,批量处理视频
Nov 16 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
MySQL授权问题总结
2007/05/06 PHP
PHP 防注入函数(格式化数据)
2011/08/08 PHP
PHP 设计模式之观察者模式介绍
2012/02/22 PHP
Yii2――使用数据库操作汇总(增删查改、事务)
2016/12/19 PHP
有效的捕获JavaScript焦点的方法小结
2009/10/08 Javascript
jquery-easyui关闭tab自动切换到前一个tab
2010/07/29 Javascript
说明你的Javascript技术很烂的五个原因
2011/04/26 Javascript
js根据给定的日期计算当月有多少天实现思路及代码
2013/02/25 Javascript
js对table的td进行相同内容合并示例详解
2013/12/27 Javascript
两个select多选模式的选项相互移动(示例代码)
2014/01/11 Javascript
js创建一个input数组并绑定click事件的方法
2014/06/12 Javascript
window.setInterval()方法的定义和用法及offsetLeft与style.left的区别
2015/11/11 Javascript
jquery限定文本框只能输入数字(整数和小数)
2016/01/08 Javascript
jQuery简单实现提交数据出现loading进度条的方法
2016/03/29 Javascript
JS实现获取来自百度,Google,soso,sogou关键词的方法
2016/12/21 Javascript
jQuery extend()详解及简单实例
2017/05/06 jQuery
深入理解jquery的$.extend()、$.fn和$.fn.extend()
2017/07/08 jQuery
Vue中的scoped实现原理及穿透方法
2018/05/15 Javascript
微信小程序实现简单评论功能
2018/11/28 Javascript
layerui代码控制tab选项卡,添加,关闭的实例
2019/09/04 Javascript
javascript 代码是如何被压缩的示例代码
2020/05/06 Javascript
JSON 入门教程基础篇 json入门学习笔记
2020/09/22 Javascript
JavaScript手写数组的常用函数总结
2020/11/22 Javascript
python定时检查启动某个exe程序适合检测exe是否挂了
2013/01/21 Python
Python中使用装饰器时需要注意的一些问题
2015/05/11 Python
Python实现的排列组合计算操作示例
2017/10/13 Python
基于python 凸包问题的解决
2020/04/16 Python
Django怎么在admin后台注册数据库表
2020/11/14 Python
常用的四种CSS透明属性介绍
2014/04/12 HTML / CSS
Oracle里面常用的数据字典有哪些
2014/02/14 面试题
如何写好建议书
2014/03/13 职场文书
工作证明范本(2篇)
2014/09/14 职场文书
思想政治表现评语
2015/01/04 职场文书
2015年小学校长工作总结
2015/05/19 职场文书
浪漫婚礼主持词开场白
2015/11/24 职场文书
python批量创建变量并赋值操作
2021/06/03 Python