您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

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语句。


联系我
置顶