常见异常类型
异常类型 |
简介 |
BaseException |
所有异常的基类 |
SystemExit |
解释器请求退出 |
KeyboardInterrupt |
用户中断执行(通常是输入 ^C) |
Exception |
常规错误的基类 |
StopIteration |
迭代器没有更多的项 |
StopAsyncIteration |
必须在异步迭代器中停止迭代 |
ArithmeticError |
数学运算错误的基类 |
FloatingPointError |
浮点运算失败 |
OverflowError |
数值运算超出最大限制 |
ZeroDivisionError |
除(或模除)零(所有数据类型) |
AssertionError |
断言语句失败 |
AttributeError |
对象没有这个属性 |
BufferError |
与缓冲区相关的操作不能执行 |
EOFError |
read() 检测到文件末尾(EOF) |
ImportError |
导入模块/对象失败 |
ModuleNotFoundError |
找不到模块 |
LookupError |
序列中没有此索引(index) |
IndexError |
序列中没有此索引(index) |
KeyError |
映射中没有这个键 |
MemoryError |
内存溢出错误(对于 Python 解释器不是致命的) |
NameError |
本地或全局名称未找到 |
UnboundLocalError |
访问未初始化的本地变量 |
OSError |
操作系统错误 |
BlockingIOError |
操作将会阻塞对象(例如 socket) |
ChildProcessError |
子进程有问题 |
ConnectionError |
连接相关的问题 |
FileExistsError |
创建一个已经存在的文件或目录 |
FileNotFoundError |
文件或目录不存在 |
InterruptedError |
系统调用被中断 |
IsADirectoryError |
对目录进行文件操作 |
NotADirectoryError |
对非目录进行目录操作 |
PermissionError |
尝试打开一个权限不足的文件 |
ProcessLookupError |
给定进程不存在 |
TimeoutError |
超时 |
ReferenceError |
弱引用(Weak reference)试图访问已经垃圾回收了的对象 |
RuntimeError |
一般的运行时错误 |
NotImplementedError |
在用户定义的基类中的抽象方法 |
SyntaxError |
语法错误 |
IndentationError |
缩进错误 |
TabError |
Tab 和空格混用 |
SystemError |
解释器内部错误 |
TypeError |
操作或函数应用于不适当类型的对象 |
ValueError |
操作或函数接收到有正确类型但不适当值的参数 |
UnicodeError |
Unicode 相关的错误 |
UnicodeDecodeError |
Unicode 解码时的错误 |
UnicodeEncodeError |
Unicode 编码时错误 |
UnicodeTranslateError |
Unicode 转换时错误 |
Warning |
警告的基类 |
DeprecationWarning |
关于被弃用的特性的警告 |
PendingDeprecationWarning |
关于特性将会被废弃的警告 |
RuntimeWarning |
可疑的运行时行为(runtime behavior)的警告 |
SyntaxWarning |
可疑的语法的警告 |
UserWarning |
用户代码生成的警告 |
FutureWarning |
关于构造将来语义会有改变的警告 |
ImportWarning |
用于在导入模块过程中触发的警告 |
UnicodeWarning |
与 Unicode 相关的警告 |
BytesWarning |
与 bytes 和 bytearray 相关的警告 |
ResourceWarning |
资源使用警告 |
Exception Hadling
try except
1 2 3 4 5 6
| try: ... except BaseException: print('...')
|
else
finally
无论程序是否正常运行、报错,finally总会运行
1 2 3 4 5 6 7 8 9 10 11 12
| try: ... except BaseException: print('...') except xxx: ... else: ... finally: print('finally')
|
自定义异常
raise
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| try: ... if ...: raise Exception('...自定义异常...') ... except ...: ... except ...: ...
except Exception as e: print(e) else: ... finally: ...
|