我有邏輯的功能,看起來像這樣:模式:在函數退出時執行某些操作的優雅方法?
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