Skip to main content
 首页 » 编程设计

python之异常后清理

2025年05月04日15bhlsheji

我有一些类似于以下的代码:

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()