получение трассировки ошибок в зарегистрированной функции atexit - PullRequest
3 голосов
/ 27 января 2012

Я пытаюсь записать ошибку, которая вызвала остановку моего процесса, но traceback.print_tb и traceback.print_exc, похоже, не понимают, что такое ошибка.

Другими словами, почемуследующий вывод «None \ n» вместо «DivisionByZero .. и т. д.»?(Изменить: ... и как мне получить доступ к поднятой / обработанной ошибке из 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

1 Ответ

1 голос
/ 27 января 2012

Я считаю, что к тому времени, когда ваша подпрограмма была вызвана, исключение уже было «обработано» (по крайней мере, когда я запускаю ваш код, я вижу трассировку, даже если я удаляю ваш вызов, чтобы напечатать один), так в этот момент форматирование не выполняется.

...