8.1
在Python中用异常对象来表示异常状态,并在错误时引发异常。
错误消息(traceback)
8.2
8.2.1
raise 语句:将一个类(是Exception的子类)或实例作为参数,当将类作为参数时将自动创建一个实例。
8.2.2
创建异常类:(一定要直接或间接的继承Exception)
class SomeCustomException (Exception):
pass(或者加入什么自定义的你想让程序干的事)
8.3
对异常的处理称为捕获异常,一般使用try/except语句。
8.3.1
1.捕获异常后可以调用raise语句且不提供任何参数,这样异常就可以继续向上传播。
2.ZeroDivisionError:抑制异常的计算器类,启用后遇到异常将打印一条错误消息,且异常不会继续传递。
3.当无法处理异常在except的子句中使用不带参数的raise语句,但当你要想引发别的异常时,进入except子句中的异常将会被作为异常上下文存储起来,并展示在最中的错误消息中,可以用raise…from…语句来提供自己的异常上下文,也可以用None来禁用上下文。
try:
…1/0
except ZeroDivisionError:
raise ValueError from None
…
trackback…
ValueError
8.3.2
当一个except语句只捕获ZeroDivisionError的错误时,其他的错误就会成为漏网之鱼,可以多添加几个except来捕获这些异常对象。
8.3.3
用一个except子句来捕获多种异常,用一个元组来指定这些异常。
8.3.4
将捕获的对象显示的打印出来。
8.3.5
当有一些你没有预测到的异常出现时,这些异常不会被try/except捕获,你可以让程序在这个地方立马崩溃你就会知道哪里出了问题。
用一段代码捕获所有异常
8.3.6
8.3.7
在程序的最后可加上finally,用于在发生异常时执行清理工作。
8.4
异常与函数:不处理函数中引发的异常,它就会一直向上传递到函数直到程序崩溃。
8.5
1.用if语句来处理函数中的异常会降低程序的可读性。
8.6
用模块warnings中的函数warn来发出警告。
from warnings import warn