是否可以编写一个异常处理程序来捕获类中所有方法生成的运行时错误?我可以通过用 try/except 包围每一个来做到这一点:
class MyError(Exception):
def __init__(self, obj, method):
print 'Debug info:', repr(obj.data), method.__name__
raise
class MyClass:
def __init__(self, data):
self.data = data
def f1(self):
try:
all method code here, maybe failing at run time
except:
raise MyError(self, self.f1)
我想知道是否有更通用的方法来实现相同的目标 - 对于课堂上任何地方的任何错误。我希望能够访问类数据以打印一些调试信息。另外,如何获取失败的方法名称(示例中的 f1)?
更新:感谢所有有见地的答案,装饰器的想法看起来像是要走的路。关于捕获所有异常的风险:分支raise
中的语句except
应该重新引发异常而不会丢失任何信息,不是吗?这就是为什么我也把它放在 MyError 中......