我有逻辑的功能,看起来像这样:模式:在函数退出时执行某些操作的优雅方法?
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()
正如你所看到的,是endstuff()
在一切可能的退出功能来完成。现在,endstuff()
实际上是两行代码,最近我不得不为所有可能的退出添加第三行代码。有没有更优雅的方式来组织这些代码?我不能只使用finally
,因为抛出异常并不总是这样。
我知道,但这仍然会有3个重复 - 最后一个,if中的一个,以及函数结尾的一个。我可以将这3个变成一个实例吗?如果endstuff()是5-6行仍然是重复的代码行。你是说我把所有的代码都放在一个单独的try ... finally块中? – Claudiu 2010-01-15 20:09:28
heh我很蠢。你的意思最终不是我的'尝试'的补充,而是围绕着整个代码。我也忘记了即使在函数退出时,终于可以调用。 – Claudiu 2010-11-29 21:42:30