写在前面
一、异常定义
Python解释器就无法继续执行了,此时会出现一些错误的提示,这就是所谓的”异常”,也就是我们常说的BUG。例如最常见的bug,打错函数名称:pring("Biomamba")# 这时就会返回报错,并告诉发生错误的位置和具体原因NameError: name ‘pring’ is not defined
二、异常捕获
bug时会存在两种情况:1、终止程序。2、提醒出现的bug并让整个程序继续运行。情况2就需要进行异常捕获,从而防止整个程序因为一些小bug而停止运行异常捕获基本语法:try:可能错误发生的代码 except:如果出现异常则执行的代码# 捕获异常(默认不区分异常类型):try: prinf('这条代码可能有异常')except:print("上条代码有异常,本条被输出")# 可以看到以上几行代码没有报错,输出的内容则是except后的语句## 上条代码有异常,本条被输出# 捕获指定异常# 例如这里捕获变量名称未定义的异常"NameError"try:print(Biomamba)exceptNameErroras aerror:print("Biomamba未被定义")# 可以看到错误成功被捕获,且备选方案被执行## Biomamba未被定义# 捕获指定异常# 这里我们让异常不属于NameError:try:print(1/0)exceptNameError :print("Biomamba未被定义")# 可以看到错误没有被捕获,提示信息被输出,备选代码也没有被执行ZeroDivisionError: division by zero
# 捕获多个异常,except(异常1,异常2)try:print(1/0)except(NameError,ZeroDivisionError):print("这是备选代码执行结果")# 可以看出备选代码被成功执行## 这是备选代码执行结果# 捕获所有类型异常try:print(1/0)print(Biomamba)exceptException:print("这是备选代码执行结果")# 可以看出备选代码被成功执行## 这是备选代码执行结果
三、异常else
except之外,还可以设置没有异常时选择执行的代码:try:print("这里没有异常")except:print("这是有异常后的执行结果")else:print("这是没有捕获到异常的执行结果")# 大家可以体会一下上述几行代码的执行逻辑## 这里没有异常## 这是没有捕获到异常的执行结果四、异常finally
finally所包含的语句均会被执行:# 有异常try:1/0print("这里没有异常")except:print("这是有异常后的执行结果")else:print("这是没有捕获到异常的执行结果")finally:print("我在所有条件下都会被执行")# 大家可以体会一下上述几行代码的执行逻辑## 这是有异常后的执行结果## 我在所有条件下都会被执行# 无异常try:1+1print("这里没有异常")except:print("这是有异常后的执行结果")else:print("这是没有捕获到异常的执行结果")finally:print("我在所有条件下都会被执行")# 大家可以体会一下上述几行代码的执行逻辑## 2## 这里没有异常## 这是没有捕获到异常的执行结果## 我在所有条件下都会被执行五、异常传递
try:1/0exceptExceptionas my_error:print("异常被成功捕获,下面是异常的具体信息:\n")print(my_error)# 可以看到除数异常被成功捕获## 异常被成功捕获,下面是异常的具体信息:## ## division by zero# 但异常的捕获是一个局部变量,跳出异常捕获语句后捕获的异常变量就失效了:try:1/0exceptExceptionas my_error:print("异常被成功捕获,下面是异常的具体信息:\n")print(my_error)# 可以看到除数异常被成功捕获,但my_error变量不存在NameError: name ‘my_error’ is not defined
往期回顾

如何联系我们


已有生信基地联系方式的同学无需重复添加

