我有一些类似于以下的代码:
try:
fn()
except ErrorA as e:
... do something unique ...
cleanup()
except ErrorB as e:
... do something unique ...
cleanup()
except ErrorC as e:
... do something unique ...
cleanup()
Python 中是否有任何机制允许我只调用一次 cleanup,只有在引发异常时才调用?基本上与 else 相反。
我能想到的最好的是:
error = True
try:
fn()
error = False
except ErrorA as e:
... do something unique ...
except ErrorB as e:
... do something unique ...
except ErrorC as e:
... do something unique ...
if error:
cleanup()
请您参考如下方法:
def _cleanup():
# clean it up
return
cleanup = _cleanup
try:
# stuff
except:
# handle it
else:
cleanup = lambda: None
cleanup()
