python3错误和内置异常 – Python3教程

上一章Python教程请查看:python3目录和文件管理
Python(解释器)在遇到错误时抛出异常,例如:除以0,在本文中,你将了解Python中内置的不同异常。
在编写程序时,我们常常会遇到错误。
【python3错误和内置异常 – Python3教程】由于不遵循正确的语言结构(语法)而引起的错误称为语法错误或解析错误。

>>> if a < 3 File "< interactive input>", line 1 if a < 3 ^ SyntaxError: invalid syntax

我们可以注意到if语句中少了一个冒号。
运行时也可能发生错误,这些错误称为异常。例如,当我们试图打开的文件不存在时(FileNotFoundError),将一个数字除以0 (ZeroDivisionError),试图导入的模块没有找到(ImportError),等等。
每当发生这种类型的运行时错误时,Python都会创建一个异常对象。如果处理不当,它将输出对该错误的回溯,以及关于该错误发生原因的一些详细信息。
>>> 1 / 0 Traceback (most recent call last): File "< string>", line 301, in runcode File "< interactive input>", line 1, in < module> ZeroDivisionError: division by zero >>> open("imaginary.txt") Traceback (most recent call last): File "< string>", line 301, in runcode File "< interactive input>", line 1, in < module> FileNotFoundError: [Errno 2] No such file or directory: 'imaginary.txt'

Python的内置异常非法操作可能引发异常。Python中有很多内置的异常,当出现相应的错误时就会引发这些异常。我们可以使用local()内置函数查看所有的内置异常,如下所示。
>>> locals()['__builtins__']

这将返回一个内置异常、函数和属性的字典。
Python编程中常见的一些内置异常以及导致这些异常的错误如下表所示。
Python的内置异常
异常 导致的错误
AssertionError 当assert语句失败时引发。
AttributeError 当属性分配或引用失败时引发。
EOFError 当input()函数达到文件结束条件时引发。
FloatingPointError 当浮点运算失败时引发。
GeneratorExit 调用生成器的close()方法时引发。
ImportError 找不到导入的模块时引发。
IndexError 当序列的索引超出范围时引发。
KeyError 在字典中找不到键时引发。
KeyboardInterrupt 当用户按下中断键(Ctrl+c或delete)时引发。
MemoryError 当操作耗尽内存时引发。
NameError 在局部或全局范围内找不到变量时引发。
NotImplementedError 由抽象方法提出。
OSError 当系统操作导致系统相关错误时引发。
OverflowError 当算术运算的结果太大而无法表示时引发。
ReferenceError 使用弱引用代理访问垃圾收集的引用时引发。
RuntimeError 当错误不属于任何其他类别时引发。
StopIteration 函数引发,以指示迭代器不再返回任何项。
SyntaxError 遇到语法错误时由解析器引发。
IndentationError 当缩进不正确时引发。
TabError 当缩进由不一致的制表符和空格组成时引发。
SystemError 当解释器检测到内部错误时引发。
SystemExit 由sys.exit()函数引发。
TypeError 将函数或操作应用于类型不正确的对象时引发。
UnboundLocalError 当在函数或方法中引用局部变量,但没有将值绑定到该变量时引发。
UnicodeError 当发生与unicode相关的编码或解码错误时引发。
UnicodeEncodeError 当编码过程中发生与unicode相关的错误时引发。
UnicodeDecodeError 当解码过程中出现与unicode相关的错误时引发。
UnicodeTranslateError 翻译过程中发生与unicode相关的错误时引发。
ValueError 当函数得到类型正确但值不正确的参数时引发。
ZeroDivisionError 当除法或模运算的第二个操作数为零时引发。
我们还可以在Python中定义自己的异常(如果需要),我们可以使用try、except和finally语句在Python中处理这些内置的和用户定义的异常。

    推荐阅读