Code Mein Projekt ist voll von Blöcken wie folgt aus:Kann ich das Verhalten von "Raise" oder "Exception" ändern?
try:
execute_some_code()
except Exception:
print(datetime.datetime.now())
raise
einfach, weil, wenn ich eine Fehlermeldung erhalten, würde ich gerne wissen, wann es passiert ist. Ich finde es ziemlich albern, diesen Code immer und immer wieder zu wiederholen, und ich würde es gern wegzählen.
Ich möchte nicht execute_some_code
mit etwas verzieren, das die Fehlererfassung (weil manchmal ist es nur ein Block von Code und nicht ein Funktionsaufruf, und manchmal brauche ich nicht genau die gleiche Funktion, um so zu dekorieren). Ich möchte auch nicht stdout auf einen anderen Stream umleiten, der alles protokolliert, denn das würde alle anderen Dinge beeinflussen, die ebenfalls an stdout gesendet werden.
Im Idealfall würde Ich mag das Verhalten entweder die raise
Aussage über-Fahrt (zum Drucken auch datetime.datetime.now()
bei jeder Ausführung) oder die Exception
Klasse, vorab pend alle seine Nachrichten mit der Zeit. Ich kann leicht unter Exception
Unterklasse, aber dann würde ich sicherstellen müssen, dass meine Funktionen eine Instanz dieser Unterklasse auslösen, und ich hätte genauso viel Code-Duplizierung wie derzeit.
Ist eine dieser Optionen möglich?
Verwenden Sie einen Debugger eine Option für Sie? – xuhdev
Ich sollte über 'sys.excepthook' schreiben, aber @ IljaEverilä schlug mich dazu, den Dupe zu finden. – Boldewyn