Получение ошибки Traceback в зарегистрированной функции ATEXIT

StackOverflow https://stackoverflow.com/questions/9025518

  •  14-11-2019
  •  | 
  •  

Вопрос

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

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

Это было полезно?

Решение

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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top