Python中的Exception
超类是什么?请提供Python异常层次结构。
答案 0 :(得分:4)
答案 1 :(得分:3)
Exception
的基类:
>>> Exception.__bases__
(BaseException,)
来自文档的Exception hierarchy确认它是所有异常的基类:
BaseException
+-- SystemExit
+-- KeyboardInterrupt
+-- GeneratorExit
+-- Exception
+-- StopIteration
+-- ArithmeticError
| +-- FloatingPointError
...
捕获所有异常的语法是:
try:
raise anything
except:
pass
注意:非常谨慎地使用它,例如,你可以在清理过程中使用__del__
方法,当世界可能被半毁坏时,没有其他选择。
Python 2允许引发不是从BaseException
派生的异常:
>>> raise 1
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: exceptions must be old-style classes or derived from BaseException, not int
>>> class A: pass
...
>>> raise A
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
__main__.A: <__main__.A instance at 0x7f66756faa28>
在Python 3中修复了强制执行规则的内容:
>>> raise 1
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: exceptions must derive from BaseException