Obtener el rastreo de excepciones en Python como una cadena

Cuando Python encuentra un error, produce un tesoro de información de error llamado traceback. El rastreo incluye el mensaje de error, el número de línea de la línea que provocó el error y la secuencia de las llamadas a funciones que provocaron el error. Esta secuencia de llamadas se denomina pila de llamadas .

Abra una nueva pestaña del editor de archivos IDLE, ingrese el siguiente programa y guárdelo como errorExample.py :

def spam():
    bacon()

def bacon():
    raise Exception('This is the error message.')

spam()

Cuando ejecuta errorExample.py , la salida se verá así:

Traceback (most recent call last):
  File "errorExample.py", line 7, in <module>
    spam()
  File "errorExample.py", line 2, in spam
    bacon()
  File "errorExample.py", line 5, in bacon
    raise Exception('This is the error message.')
Exception: This is the error message.

Desde el rastreo (Traceback), puede ver que el error ocurrió en la línea 5, en la función bacon(). Esta llamada particular a bacon() provino de la línea 2, en la función spam(), que a su vez fue llamada en la línea 7. En programas donde las funciones pueden llamarse desde múltiples lugares, la pila de llamadas puede ayudarlo a determinar qué llamada condujo a el error.

Python muestra el Traceback cada vez que una excepción generada no se controla. Pero también puede obtenerlo como una cadena llamando a traceback.format_exc(). Esta función es útil si desea obtener la información del rastreo de una excepción, pero también desea que una declaración de excepción maneje correctamente la excepción. Deberá importar el módulo de traceback de Python antes de llamar a esta función.

Por ejemplo, en lugar de bloquear su programa justo cuando ocurre una excepción, puede escribir la información de seguimiento en un archivo de texto y mantener su programa en ejecución. Puede mirar el archivo de texto más tarde, cuando esté listo para depurar su programa. Ingrese lo siguiente en el shell interactivo:

>>> import traceback
>>> try:
...          raise Exception('This is the error message.')
except:
...          errorFile = open('errorInfo.txt', 'w')
...          errorFile.write(traceback.format_exc())
...          errorFile.close()
...          print('The traceback info was written to errorInfo.txt.')


111
The traceback info was written to errorInfo.txt.

El 111 es el valor de retorno del método write(), ya que se escribieron 111 caracteres en el archivo. El texto de seguimiento se escribió en errorInfo.txt .

Traceback (most recent call last):
  File "<pyshell#28>", line 2, in <module>
Exception: This is the error message.

El módulo logging de Python, es más efectivo que simplemente escribir esta información de error en archivos de texto.

Deja una respuesta