Estoy construyendo una herramienta donde, a medida que las excepciones se propagan hacia arriba, se agregan nuevos datos sobre el contexto de la excepción a la excepción. El problema es que, cuando la excepción llega al nivel superior, todos los datos de contexto adicionales están allí, pero solo se muestra el último seguimiento de la pila. ¿Hay una manera fácil de tener una excepción para mostrar el rastro original de la pila en el que se lanzó en lugar del último rastro de la pila, o debo hacer algo así como tomar el rastro original de la pila la primera vez que se propaga la excepción?Propagación de excepción Python
Por ejemplo, el siguiente código:
def a():
return UNBOUND
def b():
try:
a()
except Exception as e:
raise e
b()
produce la siguiente excepción:
Traceback (most recent call last):
File "test.py", line 8, in <module>
b()
File "test.py", line 7, in b
raise e
NameError: global name 'UNBOUND' is not defined
donde, a ser posible, me gustaría mostrar alguna manera el usuario esto:
Traceback (most recent call last):
File "test.py", line 8, in <module>
File "test.py", line 2, in a
return UNBOUND
NameError: global name 'UNBOUND' is not defined
Lo que indica al usuario la línea en la que se produjo el error originalmente.