异常嵌套

本文深入探讨了Python中异常处理的嵌套try结构,通过实例解释了如何在内层try未捕获异常时,将异常传递给外层try进行处理的过程。当计算5/0时,触发ZeroDivisionError异常,由于内层try的exceptTypeError未能捕获,异常被传递至外层,最终由外层的exceptZeroDivisionError捕获并处理。
摘要由CSDN通过智能技术生成

在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

程序运行完成

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值