python中异常捕获的完整语法
try:
# 尝试执行的代码
pass
except 错误类型:
#针对错误类型,对应的代码处理
except Except as e: # e 是一个变量,用于记录错误类型
print("未知错误", e)
else:
# 没有异常才会执行的代码
pass
finally:
# 无论是否有异常都会执行的代码
pass
pass 是一个空语句,不做任何事,一般用做占位语句,是为了保持程序运行的完整性。
python抛出异常
- python使用raise语句抛出一个指定异常
raise TypeError("参数类型不正确")
代码执行结果为:
python assert(断言)
- python assert(断言)用于判断一个表达式,只有在表达式结果为False的时候触发异常
- assert语法格式:
assert 表达式
等价于:
if not 表达式:
raise AssertionError
- assert 后面可以加参数:
assert 表达式 [, 参数]
等价于:
if not 表达式:
raise AssertionError(参数)
- 实例1:
assert True
代码执行结果:
- 实例2:
assert False
代码执行结果:
- 实例3:
assert 1 == 1
代码执行结果:
- 实例4:
assert 1 == 2
代码执行结果:
- 实例5:
assert 1 == 2, "1 和 2 不相等"
代码执行结果:
python常见的异常类型
- BaseException 是所有异常的基类
- Exception 是常规错误的基类
python标准异常类型
异常名称 | 异常描述 |
---|---|
SystemExit | 解释器请求退出 |
Keyboardlnterrupt | 用户请求中断执行(通常输入Ctrl + C) |
Stoplteration | 迭代器没有更多的值 |
StandardError | 所有的内建标准异常的基类 |
GeneratorExit | 生成器(generator)发生异常来通知退出 |
ArithmeticError | 所有数值计算错误的基类 |
FloatingPointError | 浮点数计算错误 |
OverflowError | 数值运算超出最大限制 |
ZeroDivisionError | 除零错误 |
AssertionError | 断言语句失败 |
AttributeError | 对象没有这个属性 |
EOFError | 没有内建输入,到达EOF标记 |
EnvironmentError | 操作系统错误的基类 |
IOError | 输入/输出操作失败 |
OSError | 操作系统错误 |
WindowsError | 系统调用错误 |
ImportError | 导入模块/对象失败 |
LookupError | 无效数据查询的基类 |
IndexError | 序列中没有此索引(index) |
KeyError | 映射中没有这个键 |
MemorryError | 内存溢出错误 |
NameError | 未声明/初始化对象(没有属性) |
UnboundLocalError | 访问未初始化的本地变量 |
ReferenceError | 弱引用(weak reference)试图访问已经回收的对象 |
RuntimeError | 一般运行时错误 |
NotlmplementedError | 尚未实现的方法 |
SyntaxError | python语法错误 |
IndentationError | 缩进错误 |
TabError | Tab和空格混用 |
SystemError | 一般解释器系统错误 |
TypeError | 对类型无效的操作 |
ValueError | 传入无效的参数 |
UnicodeError | Unicode 相关的错误 |
UnicodeDecodeError | Unicode 解码时错误 |
UnicodeEncodeError | Unicode 编码时错误 |
UnicodeTranslateError | Unicode 转换时错误 |
警告异常
- Warning 警告的基类
警告异常 | 异常描述 |
---|---|
DeprecationWarning | 关于被弃用的特征的警告 |
FutureWarning | 关于构造将来语义会有改变的警告 |
OverflowWarning | 旧的关于自动提升为长整形(long)的警告 |
PendingDeprecationWarning | 关于特征将会被遗弃的警告 |
RuntimeWarning | 可疑的运行时行为(runtime behavior)的警告 |
SyntaxWarning | 可疑的语法的警告 |
UserWarning | 用户代码生成的警告 |