python 学习笔记十六 异常处理
异常
- 程序运行过程中,不可避免的会出现一些错误,如变量未赋值就使用,索引越界等
- 程序运行过程中,一旦出现异常,程序将会立即停止,异常以后的代码不会执行
处理异常
- python希望在出现异常时,我们可以编写代码来对异常进行处理
try语句
try:
代码块(可能出现错误的语句)
except:
代码块(出现错误后的处理方式)
else:
代码块(没出错时要执行的语句)
finally:
代码块(该代码块始终都执行)
try语句必须有,else语句可有无,
try中语句出错时,会执行except语句中的代码
try语句没有错误时,else中的代码会执行
异常的传播
- 当函数中出现异常时,如果在函数中对异常进行处理,则异常不会在传播;如果函数中没有处理,则传递到调用处;
从函数里异常处传递到调用处
- 如果函数调用处处理了异常则不传播,如果没处理则继续传播,直至传递到全局作用域时还没有处理,则程序终止,并显示异常。
异常对象
- 如果except后不跟任何内容,则此时它会捕获所有异常,如果在except后跟着一个异常类型,则只捕获该类型的异常;如果在except后面跟一个exception则和不跟任何内容一样;
try:
代码块(可能出现错误的语句)
except 异常:
代码块(出现错误后的处理方式)
else:
代码块(没出错时要执行的语句)
输出一个未定义的变量会引起NameError异常
在except后指定NameError,则except只捕获NameError异常
捕获多个异常时可以写多个except语句,但这种方式程序只会捕捉第一个异常不会管后面的;
查看异常对象
except exception as e:
print(‘未知异常’,e,type(e))
finally
- finally 子句不管怎么样,都会执行
finally:
代码块
出现异常时,finally语句执行
不出现异常时,finally语句执行
抛出异常
- raise可以用于向外部抛出异常,后面可以跟一个异常类或异常类的实例
- 抛出异常的目的是告诉调用者这里调用时出现问题,希望它自己处理
- 自定义异常类,创建一个类继承Exception即可