在Python中,如果try是嵌套的情况,内层的try没有捕获到异常,会传递给外层的try去捕获,如果再没有捕获,再向外层传递。
示例:
# 异常的嵌套
try:
a = 5
b = 0
try:
c = a / b
print(c)
except TypeError:
print("数字和字符不能相加")
except ZeroDivisionError:
print("除数不能为0")
except Exception as result:
print("未知错误:%s " % result)
else:
print("程序运行无异常")
finally:
print("程序运行完成")
代码在计算5/0的时候就出错了,因此后面的输出不会执行,会直接执行与第一个try处于同一个代码块的except,这个异常的类型是“ZeroDivisionError”,因此不会被except TypeError成功捕获,异常向外层传递,外层的try ZeroDivisionError就是实际发生的异常类型,因此这个异常被捕获。
输出结果:
除数不能为0
程序运行完成