异常处理
# 异常处理
# 为何需要处理异常
- 错误发生的条件是无法预知的
- 且程序崩溃后系统虽然会自动回收资源,但可能不会立即回收,这会造成一定时间的资源泄露
- 为了增强程序的健壮性,即便是程序运行过程中出错,也不要终止程序
- 而是捕捉异常并处理,将出错信息记录到日志内
# 异常处理的三个特征
- 异常的追踪信息、异常的类型、异常的内容
# 异常处理语法
try:
# 有可能抛出异常的代码块
... ...
except 异常类型 as e: # 将异常信息别名给e
# 发生异常时执行的代码块
except Exception as e:
# 发生异常时执行的代码块
else:
# 如果没有检测到异常发生,则会执行该代码块
finally:
# 无论是否检测到异常发生,都会执行该代码块
# 一般用于写被检测代码块的资源回收代码
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
except
可以有0或n个,用于处理不同的异常类型except Exception
表示捕获所有异常else
可以有0个或者1个finally
可以有0个或者1个
# 注意
- try下的代码块的某行发生异常后,就会抛出异常,抛出异常后,try内的该行后面的代码将不会被执行,而是直接进行相应的异常处理
# raise输出异常
# 自定义报异常
raise 异常类型('异常信息')