在 Python 中,异常是程序执行中发生的错误条件,当 Python 脚本遇到一个错误时,它会创建一个异常对象。如果这个异常没有被处理,程序将终止并显示一个错误消息(堆栈跟踪)。Python 使用异常对象来表示错误,并通过 try
和 except
语句来捕获和处理这些异常。
Python 的标准库中定义了多种异常,可以处理不同的错误情况。下面是一些常见的异常类型及其描述:
常见的内置异常
-
Exception
- 所有内置非系统退出异常的基类。
-
ArithmeticError
- 所有数值计算错误的基类。
OverflowError
,ZeroDivisionError
和FloatingPointError
都继承自这个类。
- 所有数值计算错误的基类。
-
BufferError
- 当与缓冲区相关的操作不能执行时抛出。
-
LookupError
- 所有映射和序列用索引或键访问元素时引发的异常的基类,例如
IndexError
和KeyError
。
- 所有映射和序列用索引或键访问元素时引发的异常的基类,例如
-
AssertionError
- 当
assert
语句失败时抛出。
- 当
-
AttributeError
- 尝试访问对象没有的属性时抛出。
-
EOFError
- 当
input()
函数在没有读取到任何数据的情况下达到文件结尾(EOF)时抛出。
- 当
-
FloatingPointError
- 浮点计算失败时抛出。
-
GeneratorExit
- 当生成器(generator)或协程(coroutine)被关闭时,即
generator.close()
被调用时抛出。
- 当生成器(generator)或协程(coroutine)被关闭时,即
-
ImportError
- 导入模块或对象失败时抛出。
-
ModuleNotFoundError
- 导入一个不存在的模块时抛出。
-
IndexError
- 当序列中没有此索引(index)时抛出。
-
KeyError
- 字典中找不到指定键时抛出。
-
KeyboardInterrupt
- 用户中断程序执行,通常是输入 Ctrl+C 时抛出。
-
MemoryError
- 操作用完内存但无法完成时抛出。
-
NameError
- 尝试访问一个本地或全局名称未声明的变量时抛出。
-
NotImplementedError
- 当一个方法或函数应该由子类实现,但在基类中仍被调用时抛出。
-
OSError
- 操作系统无法执行操作(例如打开文件)时抛出,有多个子类,如
FileNotFoundError
和PermissionError
。
- 操作系统无法执行操作(例如打开文件)时抛出,有多个子类,如
-
OverflowError
- 进行数学运算产生溢出时抛出。
-
RuntimeError
- 一般的运行时错误,通常用于不属于其他类别的错误。
-
StopIteration
- 用于信号迭代器的
next()
方法,表示没有更多的元素。
- 用于信号迭代器的
-
SyntaxError
- 解析器遇到语法错误时抛出。
-
IndentationError
- 缩进错误的基类。
-
TabError
- 当缩进包含不一致的制表符和空格时抛出。
-
SystemError
- 解释器发现内部错误时抛出。
-
TypeError
- 传递给函数的参数类型不正确时抛出。
-
ValueError
- 传递给函数的参数类型正确,但值不合适时抛出。
-
ZeroDivisionError
- 除或取模运算的第二个参数为零时抛出。
这些异常覆盖了从文件操作错误到简单的运算错误等广泛
的错误类型。合理地使用这些异常类型可以帮助开发者更好地理解和修复出现的错误,同时也使得 Python 程序更加健壮和用户友好。