2010-07-29 18 views
5

¿Cómo puedo obtener la traza completa de la pila del objeto Exception en sí?¿Cómo obtengo el seguimiento de la pila de un objeto de excepción en Python?

Consideremos el siguiente código como ejemplo la reducción del problema:

last_exception = None 
try: 
    raise Exception('foo failed') 
except Exception as e: 
    last_exception = e 
# this happens somewhere else, decoupled from the original raise 
print_exception_stack_trace(last_exception) 
+0

posible duplicado de [¿Cómo se puede inspeccionar el seguimiento de la pila de una excepción en Python?] (Http://stackoverflow.com/questions/2359248/how-can-you-inspect-the-stack-trace-of- an-exception-in-python) –

+1

Bueno, sí, ¡pero esa pregunta no se responde (satisfactoriamente)! – katrielalex

Respuesta

2

Editar: mentí, lo siento. e.__traceback__ es lo que quieres.

try: 
    raise ValueError 
except ValueError as e: 
    print(e.__traceback__) 

>c:/python31/pythonw -u "test.py" 
<traceback object at 0x00C964B8> 
>Exit code: 0 

Esto es only valid en Python 3; no puedes hacerlo en versiones anteriores.

+0

esto no es desde el objeto de la excepción en sí, pero desde dentro del seguimiento de ejecución se lanza la excepción. – camillobruni

+0

No, en Python 3 parece que sí ... ¡Acabo de probar esto y funciona! – katrielalex

+1

@katrielalex, ¿cómo haré esto en Python 2.7? No puedo encontrarlo. Gracias. – Kamilski81

Cuestiones relacionadas