Python 错误和内置异常
Python 错误和内置异常
在本教程中,您将了解 Python 内置的不同类型的错误和异常。每当 Python 解释器遇到错误时,就会引发它们。
视频:Python 异常处理
我们在编写程序时可能会犯某些错误,当我们尝试运行它时会导致错误。 python 程序一旦遇到未处理的错误就会终止。这些错误大致可以分为两类:
- 语法错误
- 逻辑错误(异常)
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+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 中定义自己的异常。要了解有关它们的更多信息,请访问 Python 用户定义的异常。
我们可以使用 try
在 Python 中处理这些内置和用户定义的异常 , except
和 finally
陈述。要了解有关它们的更多信息,请访问 Python 的 try、except 和 finally 语句。
Python