当前位置:   article > 正文

python嵌套函数中的异常处理尝试_python except exception 异常处理 调用不了内部函数

python except exception 异常处理 调用不了内部函数

嵌套函数中的异常处理尝试

最近写代码的时候突然出现了这个疑问,就是如果嵌套函数中使用异常处理,那内外层的异常处理会怎么进行。但是网上也没有找到满意的结果就自己动手试了一下。

  1. 内外层函数都有异常处理
def wz():
    try:
        1/0
    except Exception as e:
        print("wz函数的异常处理:",e)
    print("出错不影响外面的输出")
def run():
    try:
        wz()
        print("无影响")
    except Exception as e:
        print("run函数的异常处理:",e)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

wz函数的异常处理: division by zero
出错不影响外面的输出
无影响

可以看出来,内层函数出现异常时如果内层函数中有异常处理,异常对外层函数不会有影响。
  1. 内层函数没有异常处理,外层函数有。
def wz():
    1/0
    print("出错不影响外面的输出")
def run():
    try:
        wz()
        print("无影响")
    except Exception as e:
        print("run函数的异常处理:",e)

run()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

run函数的异常处理: division by zero

如果内层函数中没有异常处理,则会在外层函数中进行异常处理。
  1. 这里我尝试了一下带返回值的情况
def wz():
    try:
        return 1/0
    except Exception as e:
        print(e)
def run():
    try:
        a = wz()
        print("无影响",a)
    except Exception as e:
        print(e)

run()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

division by zero
无影响 None

  1. 异常处理的嵌套使用
def wz():
    try:
        try:
            1/0
        except Exception as e:
            print("内层处理:",e)
        print('不受影响')
    except Exception as e:
        print('外层处理:',e)

wz()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

内层处理: division by zero
不受影响

如果哪里写的不对,感谢您指出我的错误!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/631568
推荐阅读
相关标签
  

闽ICP备14008679号