当前位置:   article > 正文

try exception关于异常捕获多重使用_try except 多重

try except 多重

try exception finally 函数内部异常

msg = ""
def test():
    try:
        raise Exception("文件解压失败")
    except NameError:
        pass
    try:
        print("test")
    except Exception:
        pass


def main():
    try:
        test()
        print("main")
    except Exception:
        print("not now")

main() 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

函数内部未捕获异常异常被外层异常捕获,且函数内部代码不继续执行。

PS F:\workspace\Template> python .\try.py
not now
  • 1
  • 2

函数内部异常被捕获则不会再被捕获

def test():
    try:
        raise Exception("文件解压失败")
    except Exception:
        pass
    try:
        print("test")
    except Exception:
        pass


def main():
    try:
        test()
        print("main")
    except Exception:
        print("not now")

main() 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

代码异常被捕获且继续执行

PS F:\workspace\Template> python .\try.py
test
main
  • 1
  • 2
  • 3

异常捕获嵌套

异常被捕获则不影响代码继续执行,且外层不捕获异常,但是try内部代码触发异常以后不再继续执行

def test():
    try:
        try:
            print("in1")
            raise Exception("文件解压失败")
        except Exception:
            pass
        print("in2")
    except Exception:
        print("out")
test()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
PS F:\workspace\Template> python .\try.py
in1
in2
  • 1
  • 2
  • 3
def test():
    try:
        try:
            print("in1")
            raise NameError("文件解压失败")
            print("try in2")
        except Exception:
            raise NameError()
            pass
        print("in2")
    except Exception:
        print("out")
test()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
PS F:\workspace\Template> python .\try.py
in1
out
  • 1
  • 2
  • 3

本质上触发异常就不继续运行 ,所以尽量将try写的细点。

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号