Je suis en train de créer un outil où, lorsque les exceptions se propagent vers le haut, de nouvelles données sur le contexte de l'exception sont ajoutées à l'exception. Le problème est qu'au moment où l'exception atteint le niveau supérieur, toutes les données de contexte supplémentaires sont présentes, mais seule la toute dernière trace de pile est affichée. Existe-t-il un moyen facile d'avoir une exception montrant la trace de la pile d'origine dans laquelle elle a été lancée au lieu de la dernière trace de pile, ou devrais-je faire quelque chose comme saisir la trace de pile originale la première fois que l'exception se propage?Python Exception Propagation
Par exemple, le code suivant:
def a():
return UNBOUND
def b():
try:
a()
except Exception as e:
raise e
b()
donne l'exception suivante:
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
où, idéalement, je voudrais montrer en quelque sorte l'utilisateur ceci:
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
Comme cela pointe l'utilisateur à la ligne sur laquelle l'erreur s'est produite initialement.