常见异常类型
| 异常类型 |
简介 |
| 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: ...
|