15 votes

En Python, comment entrer dans le débogueur dans un bloc except et avoir accès à l'instance de l'exception ?

J'essaie de faire quelque chose de similaire à ce qui suit :

try:
    1/0
except ZeroDivisionError as e:
    import ipdb; ipdb.set_trace()

Lorsque j'entre dans le débogueur, j'aimerais que l'instance d'exception e pour être dans ma portée locale. Cependant, si j'exécute ce script, je constate que ce n'est pas le cas :

Kurts-MacBook-Pro-2:Scratch kurtpeek$ python debug_exception.py
--Return--
None
> /Users/kurtpeek/Documents/Scratch/debug_exception.py(4)<module>()
      2         1/0
      3 except ZeroDivisionError as e:
----> 4         import ipdb; ipdb.set_trace()

ipdb> dir()
['__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__return__', '__spec__', 'ipdb']
ipdb> e
*** NameError: name 'e' is not defined

Pourquoi est-ce que e non défini ? J'utilise actuellement print pour connaître les attributs des e mais je pense qu'il devrait être possible de le faire de manière interactive.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X