我有如下代码块:
try:
method()
except ErrorType1:
todo()
return
except ErrorType2 as e:
todo()
raise e
基本上对于两种错误类型,我需要执行todo()
首先,然后return
or raise e
。是否可以只写todo()
一次?我在想使用finally
但不要认为这实际上有效。
您可以同时捕获这两个异常except
条款,执行todo
然后根据异常类型决定做什么:
try:
method()
except (ErrorType1, ErrorType2) as e:
todo()
if isinstance(e, ErrorType1):
return
raise
注意 - 正如 @ShadowRanger 在问题评论中指出的 - 你应该使用raise
重新引发现有异常,使用raise e
将引发它的第二个副本,导致回溯包括以下行raise e
以及发生原始错误的行。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)