在python中處理異常時,我發現自己經常重複代碼。基本模式是這樣的形式:什麼是一些優雅的方法來在python中抽象出重複的異常處理?
try:
action_here()
except CommonException1:
Action_always_taken_for_CommonException1()
except CommonException2:
Action_always_taken_for_CommonException2()
except Exception:
Default_action_always_taken()
我想要做的是一些如何抽象這個重複的代碼到一個函數或類。我知道這樣做的一種方法是調用一個異常處理函數與異常對象,如:
try:
action_here()
except Exception as e:
handle_exception(e)
然後在這個函數確定基於類的例外。
def handle_exception(e):
if type(e) == type(CommonException1()):
Action_always_taken_for_CommonException1()
elif type(e) == type(CommonException2()):
Action_always_taken_for_CommonException2())
else:
Default_action_always_taken()
但是,這感覺笨重和不雅。所以我的問題是,處理重複異常處理的其他選擇是什麼?
這看起來像它可以得到的優雅。你想用什麼? – Blender 2011-03-21 06:24:09
@Blender我的解決方案是我想出的唯一可行的解決方案。我正在詢問是否有人知道更好的解決方案。 – cledoux 2011-03-21 17:40:07