1. 首页
  2. 技术文章

31、Python错误和内置异常

在本教程中,您将了解Python内置的不同类型的错误和异常。每当Python解释器遇到错误时,它们就会被引发。

在编写程序时,我们可能会犯某些错误,而在尝试运行该程序时会导致错误。python程序一旦遇到未处理的错误,即会终止。这些错误可以大致分为两类:

  1. 语法错误
  2. 逻辑错误(异常)

Python语法错误

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

让我们看一个例子:

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

如示例中所示,箭头指示解析器在哪里遇到语法错误。

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


Python逻辑错误(异常)

在运行时(通过语法测试后)发生的错误称为异常逻辑错误

例如,当我们尝试打开一个不存在的文件(用于读取)FileNotFoundError,尝试将数字除以零(ZeroDivisionError)或尝试导入不存在的模块()时,它们就会发生ImportError

每当发生这些类型的运行时错误时,Python都会创建一个异常对象。如果处理不当,它将打印出对该错误的回溯以及有关该错误发生原因的一些详细信息。

让我们看一下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()函数查看所有内置异常,如下所示:

print(dir(locals()['__builtins__']))

locals()['__builtins__']将返回内置异常,函数和属性的模块。dir允许我们将这些属性列为字符串。

以下列出了Python编程中一些常见的内置异常以及导致它们的错误:

例外 错误原因
AssertionError assert语句失败时引发。
AttributeError 在属性分配或引用失败时引发。
EOFError input()函数达到文件结束条件时引发。
FloatingPointError 当浮点运算失败时引发。
GeneratorExit close()调用生成器的方法时引发。
ImportError 在找不到导入的模块时引发。
IndexError 当序列的索引超出范围时引发。
KeyError 在字典中找不到键时引发。
KeyboardInterrupt 当用户按下中断键(Ctrl+CDelete)时引发。
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中定义自己的异常。要了解有关它们的更多信息,请访问Python用户定义的异常。

我们可以处理在Python这些内置的和用户定义的异常使用tryexceptfinally语句。要了解有关它们的更多信息,请访问Python try,except和finally语句。

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站不拥有所有权,不承担相关法律责任。如发现有侵权/违规的内容, 联系QQ1841324605,本站将立刻清除。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

评论列表(1条)

联系我们

服务热线:130-0886-1890

QR code