Python尝试/除了多个除块之外

Mat*_*sen 3 python exception

try:
    raise KeyError()
except KeyError:
    print "Caught KeyError"
    raise Exception()
except Exception:
    print "Caught Exception"
Run Code Online (Sandbox Code Playgroud)

正如预期的那样,Exception()在最后一个except Exception条款中没有提到第5行.为了捕获except KeyError块内的异常,我必须添加另一个try...except这样的并复制最终的except Exception逻辑:

try:
    raise KeyError()
except KeyError:
    print "Caught KeyError"
    try:
        raise Exception()
    except Exception:
        print "Caught Exception"
except Exception:
    print "Caught Exception"
Run Code Online (Sandbox Code Playgroud)

在Python中,是否有可能将执行流程传递给最终except Exception块,就像我想要做的那样?如果没有,是否有减少逻辑重复的策略?

eca*_*mur 6

您可以添加另一个try嵌套级别:

try:
    try:
        raise KeyError()
    except KeyError:
        print "Caught KeyError"
        raise Exception()
except Exception:
    print "Caught Exception"
Run Code Online (Sandbox Code Playgroud)