异常
Python使用异常对象来表示异常状态,并在遇到错误时引发异常。异常对象未被处理(或捕获)时,程序将终止并显示一条错误信息(traceback)。
1、自主地引发异常
1.1、raise语句
要引发异常,可使用raise语句,并将一个类(必须是Exception的子类)或实例作为参数。
一些内置异常类 | 说明 |
---|---|
Exception | 几乎所有的异常类都是从它派生来的 |
AttributeError | 引用属性或给它赋值失败时引发 |
OSError | 操作系统不能执行指定任务(如打开文件)时引发,有多个子类 |
IndexError | 使用序列中不存在的索引时引发,为LookupError的子类 |
KeyError | 使用映射中不存在的键时引发,是LookupError的子类 |
NameError | 找不到名称(变量)时引发 |
SyntaxError | 代码不正确时引发 |
TypeError | 将内置操作或函数用于类型不正确的对象时引发 |
ValueError | 将内置操作或函数用于这样的对象时引发:其类型正确但包含的值不合适 |
ZeroDivisionError | 在除法或求模运算的第二个参数为零时引发 |
1.2、自定义异常类
就跟创建其他类一样,但务必直接或间接地继承Execption。
2、捕获异常
异常有趣的地方是可对其进行处理,通常称为捕获异常,使用try/except语句。
异常从函数向外传播到调用函数的地方。如果在这里也没有被捕获,异常将向程序的最顶层传播。
2.1、不提供任何参数
捕获异常后,如果要重新引发它(即继续向上传播),可调用raise且不提供任何参数(也可以显示地提供捕获到的异常)。
2.2、最后
finally语句,无论异常是否发生,finally语句的内容都将执行。