J'ai une formation en C# et je viens de commencer à programmer en Python. Lorsqu'une exception est levée, je veux généralement l'envelopper dans une autre exception qui ajoute plus d'informations, tout en affichant la trace complète de la pile. C'est assez facile en C#, mais comment puis-je le faire en Python ?
Par exemple, en C#, je ferais quelque chose comme ceci :
try
{
ProcessFile(filePath);
}
catch (Exception ex)
{
throw new ApplicationException("Failed to process file " + filePath, ex);
}
En Python, je peux faire quelque chose de similaire :
try:
ProcessFile(filePath)
except Exception as e:
raise Exception('Failed to process file ' + filePath, e)
...mais cela perd la trace de l'exception interne !
Edit : J'aimerais voir les deux messages d'exception et les deux traces de pile et faire la corrélation entre les deux. En d'autres termes, je veux voir dans la sortie que l'exception X s'est produite ici et ensuite l'exception Y là - comme je le ferais en C#. Est-ce possible dans Python 2.6 ? Il semble que le mieux que je puisse faire jusqu'à présent (sur la base de la réponse de Glenn Maynard) soit :
try:
ProcessFile(filePath)
except Exception as e:
raise Exception('Failed to process file' + filePath, e), None, sys.exc_info()[2]
Cela inclut les deux messages et les deux traces, mais cela ne montre pas quelle exception s'est produite à quel endroit dans la trace.
3 votes
La réponse acceptée commence à dater, peut-être devriez-vous envisager d'en accepter une autre.
1 votes
@AaronHall malheureusement OP n'a pas été vu depuis 2015.