2012-01-02 4 views
6

Cuando cojo error inesperado con sys.excepthookPython coger ninguna excepción, e imprimir o ingrese rastreo con valores variables

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 

Esta es la salida consigo

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

¿Cómo puedo incluir valores de las variables (h, k, ...) en traceback similar a http://www.doughellmann.com/PyMOTW/cgitb/? Cuando incluyo el resultado de cgitb es el mismo.

EDIT:

Gran respuesta sólo lo modificó como esto por lo que los registros de seguimiento en un archivo

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

Respuesta

8

Al mirar la fuente de cgitb.py, usted debería ser capaz de usar algo como esto:

import sys 
import traceback 
import cgitb 

def handleException(excType, excValue, trace): 
    print 'error' 
    cgitb.Hook(format="text")(excType, excValue, trace) 

sys.excepthook = handleException 

h = 1 
k = 0 

print h/k 
Cuestiones relacionadas