九、python异常
异常处理机制
1、异常是什么
Python使用异常对象来表示异常状态,并在遇到错误时引发异常。
异常对象未被处理(或捕获)时,程序将终止并显示一条错误消息(traceback)。
每个异常都是某个类的实例,如ZeroDivisionError。
2、让事情沿指定的轨道出错
2.1 raise语句
要引发异常,可使用raise语句,并将一个类(必须是Exception的子类)或实例作为参数。
将类作为参数时,将自动创建一个实例。
| 类名 | 描述 |
| Exception | 几乎所有的异常类都是从它派生出来的 |
| AttributeError | 引用属性或给它赋值失败时引发 |
| OSError | 操作系统不能执行指定的任务(如打开文件)时引发,有多个子类 |
| IndexError | 使用序列中不存在的索引时引发,为LookupError的子类 |
| KeyError | 使用映射中不存在的键时引发,为LookupError的子类 |
| NameError | 找不到名称(变量)时引发 |
| SyntaxError | 代码不正确时引发 |
| TypeError | 将内置操作或函数用于类型不正确的对象时引发 |
| Valuerror | 将内置操作或函数用于这样的对象时引发:其类型正确但包含的值不合适 |
| ZeroDIvisionError | 在除法或求模运算的第二个参数为零时引发 |
2.2 自定义的异常类
就像创建其他类一样,直接或间接地继承Exception(从任何内置异常类派生都可以)

3、捕获异常
捕获异常可使用try/except

3.1 不提供参数

还可使用raise......from......语句来提供自己的异常上下文,也可使用None来禁用上下文。

3.2 多个except子句

可使用一个except子句捕获多种异常,在一个元组中指定这些异常

3.3 finally子句
finally子句,可用于在发生异常时执行清理工作。

finally子句适合用于确保文件或网络套接字得以关闭。
4、异常和函数
如果不处理函数中引发的异常,它将向上传播到调用函数的地方,如果在那里也未得到处理,异常将继续传播,直至到达主程序(全局作用域),如果主程序中也没有异常处理程序,程序将终止并显示栈跟踪消息。
5、警告
警告类似于异常,但通常只打印一条错误消息,可指定警告类别,它们是Warning的子类

浙公网安备 33010602011771号