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
War es hilfreich?

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
scroll top