例外也是对象

例外是从内置 BaseException 继承的常规 Python 对象。Python 脚本可以使用 raise 语句来中断执行,从而导致 Python 在该点打印调用堆栈的堆栈跟踪以及异常实例的表示。例如:

>>> def failing_function():
...     raise ValueError('Example error!')
>>> failing_function()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 2, in failing_function
ValueError: Example error!

其中说'Example error!'ValueError 是由我们的 failing_function() 提出的,这是在翻译中执行的。

调用代码可以选择处理调用可以引发的任何和所有类型的异常:

>>> try:
...     failing_function()
... except ValueError:
...     print('Handled the error')
Handled the error

你可以通过在异常处理代码的 except... 部分中分配异常对象来获取异常对象:

>>> try:
...     failing_function()
... except ValueError as e:
...     print('Caught exception', repr(e))
Caught exception ValueError('Example error!',)

可以在 Python 文档中找到内置 Python 异常及其描述的完整列表: https//docs.python.org/3.5/library/exceptions.html 。以下是按层次排列的完整列表: 异常层次结构