2011-07-08 6 views

Respuesta

5

El propio seguimiento de la pila no se almacena en el propio objeto de excepción. Sin embargo, puede imprimir el seguimiento de pila de la última excepción reciente utilizando sys.exc_info() y el módulo traceback. Ejemplo:

import sys 
import traceback 

try: 
    raise Exception('foo failed') 
except Exception as e: 
    traceback.print_tb(*sys.exc_info()) 

Si no desea mostrar el seguimiento de la pila inmediatamente, debe ser posible almacenar el valor de retorno de sys.exc_info() en alguna parte.

+1

Almacenar el resultado de sys.exc_info() a ciegas provocaría maldad ... desde http://docs.python.org/library/sys.html#sys.exc_info - "Advertencia Asignando el valor de retorno de la trazabilidad a un la variable local en una función que maneja una excepción generará una referencia circular ". –

+3

Además, en lugar de traceback.print_tb (* sys.exc_info()), recomendaría http://docs.python.org/library/traceback.html#traceback.format_exc para obtener una cadena de rastreo formateada. –

Cuestiones relacionadas