Abrufen des Fehler-Tracebacks in einer registrierten Aexit-Funktion
Frage
Ich versuche, den Fehler zu protokollieren, der zum Herunterfahren meines Prozesses geführt hat, aber traceback.print_tb
Und traceback.print_exc
Scheint nicht zu erkennen, was der gemeldete Fehler ist.
Mit anderen Worten, warum wird im Folgenden „None “ anstelle von „DivisionByZero“ ausgegeben?usw ..'?(Bearbeiten:..und wie erhalte ich Zugriff auf den ausgelösten/behandelten Fehler in „exit_fn“?)
import traceback, atexit
def exit_fn():
print 'exiting'
if traceback.format_exc().startswith('None'):
print 'why is this None?'
atexit.register(exit_fn)
x = 1/0
Lösung
Ich glaube, dass die Ausnahme zum Zeitpunkt des Aufrufs Ihrer Routine bereits „behandelt“ wurde (zumindest wenn ich Ihren Code ausführe, sehe ich einen Traceback, selbst wenn ich Ihren Aufruf zum Drucken entferne), sodass es keinen gibt zu diesem Zeitpunkt formatiert werden.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow