异常
-
为什么要捕获异常
- 当程序遇到了BUG,如果不对BUG进行手动捕获,那么整个程序就会因为一个BUG而停止运行,这在有些情况下是会造成很大的损失,但是如果我们进行了手动捕获,那么整个程序会继续运行
- 捕获异常的作用在于:提前假设某处会出现异常,做好准备,如果出现异常,就执行相对应的代码
-
捕获所有异常,写法一:
例如:
-
捕获所有异常,写法二:
-
捕获指定异常:
例如:
-
捕获多个异常:
例如:
-
异常else:
-
异常finally:
例如:
try:
# 表示这段代码有可能出现异常,但我也不确定
except:
# 如果try内的代码出现了异常,那么我用except来进行捕获,并执行except内的代码
else:
# 如果try内的代码没有出现异常,那么我执行else内的代码
finally:
# 无论try内的代码有没有异常,我都要执行finally内的代码# try和except是必须写且要成对出现的,而else和finally是可写可不写的
- 异常的传递性
- 基于函数之间的调用方式,异常会一层一层的向上传递,直到传递到我当前执行的最高的层级,如果在最高的层级没有调用try,程序就会直接抛出异常,如果调用try,就会尝试捕获
- 因此,如果想要捕获异常,并不需要定位到出现异常的那句代码,只需要函数之间存在调用关系,我们在最顶层的调用处,依然可以运行try进行捕获,例如: