10.8 标准异常

表10.2列出了所有的Python当前的标准异常集,所有的异常都是内建的。所以它们在脚本启动前或在互交命令行提示符出现时已经是可用的了。

10.8 标准异常 - 图1

10.8 标准异常 - 图2

10.8 标准异常 - 图3

所有的标准/内建异常都是从根异常派生的。目前,有3个直接从BaseException派生的异常子类:SystemExit, Keyboardlnterrupt和Exception。其他的所有的内建异常都是Exception的子类。表10.2中的每一层缩进都代表一次异常类的派生。

到了 Python2.5,所有的异常的都是新式类,并且最终都是BaseException的子类。在这一版中,SystemExit和Keyboardlnterrupt从Exception的继承中移到BaseException的继承中,这样可以允许如except Exception的语句捕获所有非控制程序退出的异常。

从Pythonl.5到Python2.4.x,异常是标准的类,在这之前,他们是字符串。从Python2.5开始,不再支持构建基于字符串的异常并且被正式的弃用,也就是说你不能再触发一个字符串异常了。在2.6,你将不能捕获他们。还有一个要求就是所有新的异常最终都是BaseException的子类,以便于他们有一个统一的接口。这将从Python2.7开始,并在余下的Python2.x发布版中延续。