Python 基础教程

Python 流程控制

Python 函数

Python 数据类型

Python 文件操作

Python 对象和类

Python 日期和时间

Python 高级知识

Python 参考手册

Python 错误和内置异常

Python(解释器)遇到错误时会引发异常。 例如:除以零。 在本文中,您将了解Python内置的不同异常处理。

在编写程序时,我们经常会遇到错误。

由于未遵循语言的正确结构(语法)而导致的错误称为语法错误或解析错误。

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

在这里我们可以注意到if语句中缺少一个冒号。

错误也可能在运行时发生,这些被称为异常。 例如,当我们尝试打开的文件不存在(FileNotFoundError),将数字除以零(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由next()函数引发,以指示迭代器没有其他项目可返回。
SyntaxError遇到语法错误时由解析器引发。
IndentationError缩进不正确时引发。
TabError当缩进由不一致的制表符和空格组成时引发。
SystemError在解释器检测到内部错误时引发。
SystemExit由sys.exit()功能引发。
TypeError当函数或操作应用于错误类型的对象时引发。
UnboundLocalError在对函数或方法中的局部变量进行引用但没有值绑定到该变量时引发。
UnicodeError在发生与Unicode相关的编码或解码错误时引发。
UnicodeEncodeError在编码过程中发生与Unicode相关的错误时引发。
UnicodeDecodeError在解码期间发生与Unicode相关的错误时引发。
UnicodeTranslateError在翻译过程中发生Unicode相关错误时引发。
ValueError当函数获取正确类型但值不正确的参数时引发。
ZeroDivisionError当除法或模运算的第二个操作数为零时引发。

我们也可以在Python中定义我们自己的异常(如果需要的话)。访问此页面以了解有关用户定义的异常的更多信息。 

我们可以使用try、except和finally语句在Python中处理这些内置的和用户定义的异常