7 Stimmen

Python fängt jede Ausnahme ab und druckt oder protokolliert Traceback mit Variablenwerten

Wenn ich einen unerwarteten Fehler mit sys.excepthook abfange

import sys
import traceback

def handleException(excType, excValue, trace):
    print 'error'
    traceback.print_exception(excType, excValue, trace)

sys.excepthook = handleException

h = 1
k = 0

print h/k

Diese Ausgabe erhalte ich

error
Traceback (most recent call last):
   File "test.py", line 13, in <module>
      print h/k
ZeroDivisionError: integer division or modulo by zero

Wie kann ich Variablenwerte (h, k, ...) in den Traceback aufnehmen, ähnlich wie bei http://www.doughellmann.com/PyMOTW/cgitb/ ? Wenn ich cgitb einfüge, ist das Ergebnis dasselbe.

EDIT :

Tolle Antwort Ich habe es nur so geändert, dass es die Aufzeichnung in einer Datei protokolliert

def handleException(excType, excValue, trace):
    cgitb.Hook(logdir=os.path.dirname(__file__),
      display=False,
      format='text')(excType, excValue, trace)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X