使用多个Except块的Python Try/Except
正如预期的那样,在第5行提出的使用多个Except块的Python Try/Except,python,exception,Python,Exception,正如预期的那样,在第5行提出的Exception()不会出现在最后的Exception子句中。为了捕获exception KeyError块内部的异常,我必须添加另一个try…exception,如下所示,并复制最后的exception逻辑: try: raise KeyError() except KeyError: print "Caught KeyError" raise Exception() except Exception: print "Caught
Exception()
不会出现在最后的Exception
子句中。为了捕获exception KeyError
块内部的异常,我必须添加另一个try…exception
,如下所示,并复制最后的exception
逻辑:
try:
raise KeyError()
except KeyError:
print "Caught KeyError"
raise Exception()
except Exception:
print "Caught Exception"
在Python中,是否可以像我尝试做的那样,将执行流传递到最后的
异常块之外的块?如果没有,是否有减少逻辑重复的策略?您可以添加另一级别的尝试嵌套:
try:
raise KeyError()
except KeyError:
print "Caught KeyError"
try:
raise Exception()
except Exception:
print "Caught Exception"
except Exception:
print "Caught Exception"
对将用于处理异常的代码放入函数中。然后在两个位置调用该函数。除外
子句只捕获在try
中抛出的错误;否则,如果你想的话,你就不能再加薪了。嗯,你能解释一下你想要达到的目标吗?重新引发捕获的异常的标准方法是raise
,您最终决定不处理该异常,而不做任何其他处理。在这种情况下,这可能符合您的要求,也可能不符合您的要求。单从您的代码无法判断。我将给出比@JLPeyret更有力的建议:不要将异常用于流控制。你到底想达到什么目的?也许有更优雅的解决方案。
try:
try:
raise KeyError()
except KeyError:
print "Caught KeyError"
raise Exception()
except Exception:
print "Caught Exception"