• 8.2. 异常

    8.2. 异常

    即使语句或表达式在语法上是正确的,但在尝试执行时,它仍可能会引发错误。 在执行时检测到的错误被称为 异常,异常不一定会导致严重后果:你将很快学会如何在 Python 程序中处理它们。 但是,大多数异常并不会被程序处理,此时会显示如下所示的错误信息:

    1. >>> 10 * (1/0)
    2. Traceback (most recent call last):
    3. File "<stdin>", line 1, in <module>
    4. ZeroDivisionError: division by zero
    5. >>> 4 + spam*3
    6. Traceback (most recent call last):
    7. File "<stdin>", line 1, in <module>
    8. NameError: name 'spam' is not defined
    9. >>> '2' + 2
    10. Traceback (most recent call last):
    11. File "<stdin>", line 1, in <module>
    12. TypeError: Can't convert 'int' object to str implicitly

    错误信息的最后一行告诉我们程序遇到了什么类型的错误。异常有不同的类型,而其类型名称将会作为错误信息的一部分中打印出来:上述示例中的异常类型依次是:ZeroDivisionErrorNameErrorTypeError。作为异常类型打印的字符串是发生的内置异常的名称。对于所有内置异常都是如此,但对于用户定义的异常则不一定如此(虽然这是一个有用的规范)。标准的异常类型是内置的标识符(而不是保留关键字)。

    这一行的剩下的部分根据异常类型及其原因提供详细信息。

    错误信息的前一部分以堆栈回溯的形式显示发生异常时的上下文。通常它包含列出源代码行的堆栈回溯;但是它不会显示从标准输入中读取的行。

    内置异常 列出了内置异常和它们的含义。