什么是异常(BUG)
检测到错误,py编译器无法继续执行 ,反而出现错误提示
如果遇到错误能继续执行 ,那么就捕获(try)
1.得到异常:try的执行,try内只 可以捕获一个 异常
2.预案执行:except后面的语句
3.传入异常:except ... as uestc+print(uestc)
4.没有异常:else...
5.鉴定完毕,收尾的语句(必然执行):finally #常应用于f.close()
BUG举例:
打开一个不存在的文件: No such file or directory: '不存在的文件'
异常的情况:
1.整个程序因为一个BUG失灵崩溃中断
2.对BUG提醒,程序继续进行(*)
显然,我们遇到的BUG大多因为1,但是我们希望是2
捕获异常:
1.所有异常,提前假设某处出现异常,做好预备工作
python
try:
可能发生错误的代码
except:
应对措施
except Exception as e:#exception是所有异常的父类,可以通过不具体指定也了解该异常
print("捕捉到异常,你猜猜在哪(。・∀・)ノ")
else:
print("没有异常(●'◡'●)")
finally:
print("无论如何你都会看到我,因为我是finally(*/ω\*)")
例子
python
# f=open("linux.txt","r",encoding="utf-8")#没有此文件,故出现红字提示异常中断
try:
f = open("linux.txt", "r", encoding="utf-8")
except Exception as e:
print("出现异常,猜猜是谁(。・∀・)ノ:", e)
f = open("bug.txt", "w", encoding="utf-8")# 写入不存在的文件会自动创建,但是读入不可以
2.捕获指定异常 :先运行代码,如果报错,把错误类型复制然后except这种类型异常的处理
python
try:
print(TOT)
except NameError as namebug
print("namebug变量名称未定义错误")
3.捕获指定多种异常(但仍然捕获一个,只是不限类型)
python
try:
a=1/0
except (ZeroDivisionError,NameError) as e2:
print("捕捉到异常啦!o(* ̄▽ ̄*)ブ :",e2)
python
try:
a=1/0 #a=1/10则有异常
except:
print("出现异常ヽ(*。>Д<)o゜")
else:
print("没有异常φ(゜▽゜*)♪")
finally:
print("鉴定完毕,收工(づ ̄ 3 ̄)づ")#不管有无异常都要执行
异常的传递
嵌套函数的内部如果异常且没有捕获,那么这个异常会传递给调用它的函数
如果嵌套函数生命周期内都没有捕获异常,程序就会报错