python异常处理
标准异常(error)汇总
提示符 | 含义 |
---|---|
BaseException | 所有异常的 基类 |
Exception | 常规异常的 基类 |
StandardError | 所有的内建标准异常的基类 |
ArithmeticError | 所有数值计算异常的基类 |
FloatingPointError | 浮点计算异常 |
OverflowError | 数值运算超出最大限制 |
ZeroDivisionError | 除数为零 |
AssertionError | 断言语句(assert)失败 |
AttributeError | 尝试访问未知的对象属性 |
EOFError | 没有内建输入,到达EOF标记 |
EnvironmentError | 操作系统异常的基类 |
IOError | 输入/输出操作失败 |
OSError | 操作系统产生的异常(例如打开一个不存在的文件) |
WindowsError | 系统调用失败 |
ImportError | 导入模块失败的时候 |
KeyboardInterrupt | 用户中断执行 |
LookupError | 无效数据查询的基类 |
IndexError | 索引超出序列的范围 |
KeyError | 字典中查找一个不存在的关键字 |
MemoryError | 内存溢出(可通过删除对象释放内存) |
NameError | 尝试访问一个不存在的变量 |
UnboundLocalError | 访问未初始化的本地变量 |
ReferenceError | 弱引用试图访问已经垃圾回收了的对象 |
RuntimeError | 一般的运行时异常 |
NotImplementedError | 尚未实现的方法 |
SyntaxError | 语法错误导致的异常 |
IndentationError | 缩进错误导致的异常 |
TabError | Tab和空格混用 |
SystemError | 一般的解释器系统异常 |
TypeError | 不同类型间的无效操作 |
ValueError | 传入无效的参数 |
UnicodeError | Unicode相关的异常 |
UnicodeDecodeError | Unicode解码时的异常 |
UnicodeEncodeError | Unicode编码错误导致的异常 |
UnicodeTranslateError | Unicode转换错误导致的异常 |
标准警告 (warning)汇总
提示符 | 含义 |
---|---|
Warning | 警告的基类 |
DeprecationWarning | 关于被弃用的特征的警告 |
FutureWarning | 关于构造将来语义会有改变的警告 |
UserWarning | 用户代码生成的警告 |
PendingDeprecationWarning | 关于特性将会被废弃的警告 |
RuntimeWarning | 可疑的运行时行为(runtime behavior)的警告 |
SyntaxWarning | 可疑语法的警告 |
ImportWarning | 用于在导入模块过程中触发的警告 |
UnicodeWarning | 与Unicode相关的警告 |
BytesWarning | 与字节或字节码相关的警告 |
ResourceWarning | 与资源使用相关的警告 |
异常处理方法
try-except 语句
try 语句按照如下方式工作:
-
首先,执行
try
子句(在关键字try和关键字except之间的语句) 如果没有异常发生,忽略except
子句,try
子句执行后结束。 -
如果在执行
try
子句的过程中发生了异常,那么try
子句余下的部分将被忽略。 -
如果异常的类型和
except
之后的名称相符,那么对应的except
子句将被执行。最后执行try
语句之后的代码。 -
如果一个异常没有与任何的
except
匹配,那么这个异常将会传递给上层的try
中。
try:
检测范围
except 异常类型 [as error]:
出现异常后的处理代码
- 为帮助大家更好地理解try-except语句,下面举一个由于语句 f.close( )缩进方式 的不同而依次产生的
OSError
,SyntaxError
,IndentationError
#OSError 操作系统产生的异常(打开一个不存在的文件)
try:
f=open('1.txt')
print(f.read())
f.close()
except OSError:
print('打开文件出错')
由于未找到文件‘1.txt’,错误类型与OSError匹配,因而输出为:打开文件出错
#SyntaxError 语法错误产生的异常
try:
f=open('1.txt')
print(f.read())
f.close()
<