有关异常捕获中的except
不是说except后跟什么异常就能捕获该类异常吗?为什么又有变量名错误,又有除零错误,只显示了变量名错误,不显示除零错误呢? print(a) 在 print(10/0) 上面不是吗? 因为捕获到变量名错误后就不往下执行了,所以除零那里是没有执行的 只要 try 发现错误,就直接跳去 except 了,不会再继续。 try:
print("这里是 A")
print(a) # <-------- 这里发现错误
print(10/0) # <-------- 这里被无视了
print("这里是 B") # <-------- 这里被无视了
except ZeroDivisionError:
print("除零错误")
except NameError:
print("变量名错误") 傻眼貓咪 发表于 2022-4-28 17:25
是不是只捕获某一种错误类型时,程序会报错,但是捕获所有错误类型时,会显示第一种错误类型,之后的不显示?print("异常出现前")
try:
print(a)
print(10/0)
except ZeroDivisionError:
print("除零错误")
# except NameError:
# print("变量名错误")
print("异常出现后")
把变量名错误注释掉的话就会报错了。 fledgling 发表于 2022-4-28 18:54
是不是只捕获某一种错误类型时,程序会报错,但是捕获所有错误类型时,会显示第一种错误类型,之后的不显 ...
可以这样说。
但如果你想让两个报错都打印,可以试试代码:(但基本没有人会这样做,因为异常处理不是这样用的)try:
print(a) # <-------- 这里发现第一个错误
except NameError:
print("变量名错误")
try:
print(10/0) # <-------- 这里发现第二个错误
except ZeroDivisionError:
print("除零错误")变量名错误
除零错误 傻眼貓咪 发表于 2022-4-28 19:50
可以这样说。
但如果你想让两个报错都打印,可以试试代码:(但基本没有人会这样做,因为异常处理不是这 ...
谢谢
页:
[1]