クラス内のすべてのメソッドによって生成された実行時エラーをキャッチするための例外ハンドラーを作成することは可能ですか?それぞれを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に入れました...