【发布时间】:2011-03-21 06:06:42
【问题描述】:
在 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 我的解决方案是我想出的唯一可行的解决方案。我想看看是否有人知道更好的解决方案。