异常对象。异常情况(比如发生错误)可以用异常对象表示。它们可以用几种方法处理,但是如果忽略的话,程序就会中止。
警告。警告类似于异常,但是(一般来说)仅仅打印错误信息。
引发异常。可以使用raise语句引发异常。它接受异常类或者异常实例作为参数。还能提供两个参数(异常和错误信息)。如果在except子句中不使用参数调用raise,它就会“重新引发”该子句捕捉到的异常。
自定义异常类:用继承Exception类的方法可以创建自己的异常类。
捕捉异常。使用try语句的except子句捕捉异常。如果在except子句中不特别指定异常类,那么所有的异常都会被捕捉。异常可以放在元组中以实现多个异常的指定。如果给except提供两个参数,第2个参数就会绑定到异常对象上。同样,在一个try/except语句中能包含多个except子句,用来分别处理不同的异常。
else子句。除了except子句,可以使用else子句。如果主try块中没有引发异常,else子句就会被执行。
finally。如果需要确保某些代码不管是否有异常引发都要执行(比如清理代码),那么这些代码可以放置在finally子句中。
异常和函数。在函数内引发异常时,它就会被传播到函数调用的地方(对于方法也是一样)。