Fange Ausnahmen in einer Klasse ab
Ist es möglich, einen Ausnahmehandler zu schreiben, um die Laufzeitfehler abzufangen, die von ALLEN Methoden in der Klasse generiert werden? Ich kann es tun, indem ich jeden mit try / except umgebe:
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)
Ich frage mich, ob es einen allgemeineren Weg gibt, um dasselbe zu erreichen - für jeden Fehler, der irgendwo in der Klasse auftritt. Ich möchte auf die Klassendaten zugreifen können, um einige Debug-Informationen auszudrucken. Wie erhalte ich den fehlgeschlagenen Methodennamen (f1 im Beispiel)?
Aktualisieren: danke an alle für die aufschlussreichen antworten, die idee des dekorateurs scheint der richtige weg zu sein. Informationen zum Risiko, ALLE Ausnahmen einzufangen: araise
Aussage in derexcept
Branch sollte die Ausnahme erneut auslösen, ohne Informationen zu verlieren, nicht wahr? Deshalb habe ich es auch in MyError abgelegt ...