Exception passant en Python
J'ai un peu de code qui fait fonctionnel, la gestion des exceptions et tout fonctionne bien, les exceptions sont soulevées lorsque je veux les faire, mais quand je suis le débogage, la ligne-des traces n'est pas toujours tout à fait ce que je voudrais.
Exemple:
>>> 3/0
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ZeroDivisionError: integer division or modulo by zero
Exemple B:
>>> try: 3/0
... except Exception as e: raise e
...
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
ZeroDivisionError: integer division or modulo by zero
Dans ces deux exemples, l'exception qui se passe réellement dans la ligne 1, où nous essayons de faire 3/0, mais dans ce dernier exemple, on nous dit qu'il a eu lieu sur la ligne 2, où il est élevé.
Est-il un moyen en Python pour soulever une exception, comme si c'était une autre exception, quelque chose qui serait de produire le résultat suivant:
>>> try: 3/0
... except Exception as e: metaraise(e)
...
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ZeroDivisionError: integer division or modulo by zero
source d'informationauteur Kevin Dolan
Vous devez vous connecter pour publier un commentaire.
Lorsque vous re-soulever une exception que vous avez pris, comme
il réinitialise la trace de la pile. C'est comme re-création d'une nouvelle exception à la règle. Ce que vous voulez, c'est ceci:
Pour référence, la solution est approximativement comme suit:
La belle partie de ceci est que vous pouvez ensuite passer autour de la variable e et metaraise ailleurs, même si d'autres exceptions ont été rencontrées le long du chemin.