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 27 Python
Python爬虫PyQuery库基本用法入门教程
Aug 04 Python
Python 实现域名解析为ip的方法
Feb 14 Python
numpy linalg模块的具体使用方法
May 26 Python
关于python导入模块import与常见的模块详解
Aug 28 Python
python使用sklearn实现决策树的方法示例
Sep 12 Python
通过 Django Pagination 实现简单分页功能
Nov 11 Python
Django跨域资源共享问题(推荐)
Mar 09 Python
python实现斗地主分牌洗牌
Jun 22 Python
详解python内置模块urllib
Sep 09 Python
Jupyter notebook 更改文件打开的默认路径操作
May 21 Python
浅谈Python数学建模之数据导入
Jun 23 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
剧场版动画《PSYCHO-PASS 3 FIRST INSPECTOR》3月27日日本上映!
2020/03/06 日漫
THINKPHP+JS实现缩放图片式截图的实现
2010/03/07 PHP
使用php 获取时间今天明天昨天时间戳的详解
2013/06/20 PHP
php分页函数完整实例代码
2014/09/22 PHP
php使用ftp远程上传文件类(完美解决主从文件同步问题的方法)
2016/09/23 PHP
Add a Picture to a Microsoft Word Document
2007/06/15 Javascript
超轻量级的基于jquery的三级展开列表
2011/04/26 Javascript
怎么清空javascript数组
2013/05/11 Javascript
简单漂亮的js弹窗可自由拖拽且兼容大部分浏览器
2013/10/22 Javascript
js导入导出excel(实例代码)
2013/11/25 Javascript
实例分析js和C#中使用正则表达式匹配a标签
2014/11/26 Javascript
NodeJS学习笔记之FS文件模块
2015/01/13 NodeJs
nodejs简单实现操作arduino
2016/09/25 NodeJs
微信小程序动态添加分享数据
2017/06/14 Javascript
基于JS对象创建常用方式及原理分析
2017/06/28 Javascript
VUE实现一个分页组件的示例
2017/09/13 Javascript
vue绑定的点击事件阻止冒泡的实例
2018/02/08 Javascript
使用javascript做时间倒数读秒功能的实例
2019/01/23 Javascript
Vue组件的使用及个人理解与介绍
2019/02/09 Javascript
Python解析网页源代码中的115网盘链接实例
2014/09/30 Python
深入理解Python中的元类(metaclass)
2015/02/14 Python
python3.6 实现AES加密的示例(pyCryptodome)
2018/01/10 Python
Python multiprocess pool模块报错pickling error问题解决方法分析
2019/03/20 Python
python实现简单五子棋游戏
2019/06/18 Python
在Mac中PyCharm配置python Anaconda环境过程图解
2020/03/11 Python
浅谈numpy中np.array()与np.asarray的区别以及.tolist
2020/06/03 Python
详解在Python中使用Torchmoji将文本转换为表情符号
2020/07/27 Python
如何在Canvas中添加事件的方法示例
2019/05/21 HTML / CSS
德国富尔达运动鞋店:43einhalb
2020/12/25 全球购物
《我的伯父鲁迅先生》教学反思
2014/02/12 职场文书
商务英语广告词大全
2014/03/18 职场文书
女性健康知识讲座通知
2015/04/23 职场文书
干部作风纪律整顿心得体会
2016/01/23 职场文书
《植物妈妈有办法》教学反思
2016/02/23 职场文书
2016年小学推普宣传周活动总结
2016/04/06 职场文书
2019新学期家长会工作计划
2019/08/21 职场文书