Obtenir la trace d'erreur dans une fonction Atexit enregistrée
Question
J'essaie de vous enregistrer l'erreur qui a causé mon processus d'arrêt, mais traceback.print_tb
et traceback.print_exc
ne semblent pas comprendre ce que l'erreur surélevée est.
En d'autres termes, pourquoi l'impression suivante "aucun \ n" au lieu de "divisionbyzero" .. etc. '?(Modifier: .. et comment puis-je accéder à l'erreur surélevée / manipulée à partir de EXIT_FN?)
import traceback, atexit
def exit_fn():
print 'exiting'
if traceback.format_exc().startswith('None'):
print 'why is this None?'
atexit.register(exit_fn)
x = 1/0
La solution
I believe that, by the time your routine has been called, the exception has already been 'handled' (at least when I run your code, I see a traceback even if I remove your call to print one), so that there is none to be formatted at that point.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow