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

时间:2016-04-20 21:10:12

标签: python exception

try:
    raise KeyError()
except KeyError:
    print "Caught KeyError"
    raise Exception()
except Exception:
    print "Caught Exception"

正如预期的那样,在最后的Exception()条款中没有记录第5行的except Exception。为了捕获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"

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

1 个答案:

答案 0 :(得分:6)

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

try:
    try:
        raise KeyError()
    except KeyError:
        print "Caught KeyError"
        raise Exception()
except Exception:
    print "Caught Exception"