fledgling 发表于 2022-4-28 17:07:27

有关异常捕获中的except


不是说except后跟什么异常就能捕获该类异常吗?为什么又有变量名错误,又有除零错误,只显示了变量名错误,不显示除零错误呢?

傻眼貓咪 发表于 2022-4-28 17:20:20

print(a) 在 print(10/0) 上面不是吗?

isdkz 发表于 2022-4-28 17:20:49

因为捕获到变量名错误后就不往下执行了,所以除零那里是没有执行的

傻眼貓咪 发表于 2022-4-28 17:21:39

只要 try 发现错误,就直接跳去 except 了,不会再继续。

傻眼貓咪 发表于 2022-4-28 17:25:48

try:
        print("这里是 A")
        print(a) # <-------- 这里发现错误
        print(10/0) # <-------- 这里被无视了
        print("这里是 B") # <-------- 这里被无视了
except ZeroDivisionError:
        print("除零错误")
except NameError:
        print("变量名错误")

fledgling 发表于 2022-4-28 18:54:28

傻眼貓咪 发表于 2022-4-28 17:25


是不是只捕获某一种错误类型时,程序会报错,但是捕获所有错误类型时,会显示第一种错误类型,之后的不显示?print("异常出现前")
try:
    print(a)
    print(10/0)
except ZeroDivisionError:
    print("除零错误")
# except NameError:
#   print("变量名错误")
print("异常出现后")

把变量名错误注释掉的话就会报错了。

傻眼貓咪 发表于 2022-4-28 19:50:51

fledgling 发表于 2022-4-28 18:54
是不是只捕获某一种错误类型时,程序会报错,但是捕获所有错误类型时,会显示第一种错误类型,之后的不显 ...

可以这样说。
但如果你想让两个报错都打印,可以试试代码:(但基本没有人会这样做,因为异常处理不是这样用的)try:
    print(a) # <-------- 这里发现第一个错误
except NameError:
    print("变量名错误")

try:
    print(10/0) # <-------- 这里发现第二个错误
except ZeroDivisionError:
    print("除零错误")变量名错误
除零错误

fledgling 发表于 2022-4-28 20:13:35

傻眼貓咪 发表于 2022-4-28 19:50
可以这样说。
但如果你想让两个报错都打印,可以试试代码:(但基本没有人会这样做,因为异常处理不是这 ...

谢谢
页: [1]
查看完整版本: 有关异常捕获中的except