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

Était-ce utile?

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
scroll top