1.异常继承结构图
BaseException是所有异常的基类,其下并行那个异常类,KeyboardInterrupt、SystemExit、Exception
SystemExit 和 KeyboardInterupt 不是由于错误条件引起的。SystemExit 是由于当前 Python 应用程序需要退出, KeyboardInterupt 代表用户按下了 CTRL-C (^C) , 想要关闭 Python
当在 try 范围中产生一个异常时,(这里)会立即跳转到 finally 语句段。当 finally 中的所有代码都执行完毕后,会继续向上一层引发异常。(这句话有待深究,暂时还无法体会)
2.异常参数
异常也可以有参数, 异常引发后它会被传递给异常处理器, 当异常被引发后参数是作为附加帮助信息传递给异常处理器的。
# single exception
except Exception[, reason]:
suite_for_Exception_with_Argument
# multiple exceptions
except (Exception1, Exception2, ..., ExceptionN)[, reason]:
suite_for_Exception1_to_ExceptionN_with_Argument
reason 是一个包含来自导致异常的代码的诊断信息的类实例。异常参数自身会组成一个元组,并存储为类实例(异常类的实例)的属性。
(Exception1, Exception2, ..., ExceptionN)是一个元组,但发生异常比如说Exception1,会将错误信息给reason
3.触发异常
raise语句
raise [SomeException [, args [, traceback]]]
第一个参数,SomeExcpetion,是触发异常的名字。如果有,它必须是一个字符串,类或实例。如果有其他参数(arg 或 traceback),就必须提供 SomeExcpetion。