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程序
Sep 11 Python
python中map、any、all函数用法分析
Apr 21 Python
Python自然语言处理之词干,词形与最大匹配算法代码详解
Nov 16 Python
详解Python正则表达式re模块
Mar 19 Python
Python时间序列缺失值的处理方法(日期缺失填充)
Aug 11 Python
Django 查询数据库并返回页面的例子
Aug 12 Python
Python递归函数 二分查找算法实现解析
Aug 12 Python
python同时替换多个字符串方法示例
Sep 17 Python
python脚本调用iftop 统计业务应用流量的思路详解
Oct 11 Python
python基于tkinter制作无损音乐下载工具
Mar 29 Python
Pytest中skip skipif跳过用例详解
Jun 30 Python
Python中tqdm的使用和例子
Sep 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
php中的一些数组排序方法分享
2012/07/20 PHP
SOSO地图API使用(一)在地图上画圆实现思路与代码
2013/01/15 Javascript
Javascript变量的作用域和作用域链详解
2015/04/02 Javascript
js判断日期时间有效性的方法
2015/10/24 Javascript
js实现跨域的4种实用方法原理分析
2015/10/29 Javascript
JavaScript6 let 新语法优势介绍
2016/07/15 Javascript
JS图片预加载插件详解
2017/06/21 Javascript
详谈innerHTML innerText的使用和区别
2017/08/18 Javascript
基于JavaScript实现五子棋游戏
2020/08/26 Javascript
JS实现字符串去重及数组去重的方法示例
2018/04/21 Javascript
jQuery中常用动画效果函数知识点整理
2018/08/19 jQuery
React事件处理的机制及原理
2018/12/03 Javascript
JavaScript this绑定过程深入详解
2018/12/07 Javascript
利用JS代码自动删除稿件的普通弹幕功能
2019/09/20 Javascript
vue项目从node8.x升级到12.x后的问题解决
2019/10/25 Javascript
详解vue-router的导航钩子(导航守卫)
2020/11/02 Javascript
如何使用原生Js实现随机点名详解
2021/01/06 Javascript
使用url_helper简化Python中Django框架的url配置教程
2015/05/30 Python
Python 中的 else详解
2016/04/23 Python
Python元组知识点总结
2019/02/18 Python
Python3.6中Twisted模块安装的问题与解决
2019/04/15 Python
python 获取sqlite3数据库的表名和表字段名的实例
2019/07/17 Python
Python+OpenCV图像处理——图像二值化的实现
2020/10/24 Python
python绘制雷达图实例讲解
2021/01/03 Python
django inspectdb 操作已有数据库数据的使用步骤
2021/02/07 Python
Jabra捷波朗美国官网:用于办公、车载和运动的无线蓝牙耳麦
2017/02/01 全球购物
苏格兰销售女装、男装和童装的连锁店:M&Co
2018/03/16 全球购物
德国自行车商店:Tretwerk
2019/06/21 全球购物
仓库管理专业个人的自我评价
2013/12/30 职场文书
秋季运动会表扬稿
2014/01/16 职场文书
新护士岗前培训制度
2014/02/02 职场文书
电大奖学金获奖感言
2014/08/14 职场文书
职业生涯规划书怎么写?
2014/09/14 职场文书
三好学生竞选稿
2015/11/21 职场文书
python生成随机数、随机字符、随机字符串
2021/04/06 Python
《巫师》是美食游戏?CDPR10月将推出《巫师》官方食谱
2022/04/03 其他游戏