模式:在功能退出时做一些优雅的方式?

Cla*_*diu 2 language-agnostic design-patterns coding-style

我有一个逻辑函数,如下所示:

doStuff1()
try:
    doStuff2()
except type1:
    error1()
    return endstuff()
except type2:
    error2()
    return endstuff()
except:
    error3()
    return endstuff()

if doStuff3():
    error4()
    return endstuff()

doStuff4()
return endstuff()
Run Code Online (Sandbox Code Playgroud)

如您所见,endstuff()在函数的每个可能出口处完成.就像现在一样,endstuff()实际上是2行代码,我最近不得不在所有可能的退出中添加第三行代码.有没有更优雅的方式来组织这个代码?我不能只使用a finally,因为抛出异常的情况并非总是如此.

Otá*_*cio 10

即使没有抛出异常,你也可以使用finally,而AFAIK这是你做你想做的最优雅的方式.