3

我正在尝试记录导致我的进程关闭的错误,但traceback.print_tb似乎traceback.print_exc没有意识到引发的错误是什么。

换句话说,为什么下面会打印 'None\n' 而不是 'DivisionByZero .. etc ..'?(编辑:..以及如何从 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
4

1 回答 1

1

我相信,当您的例程被调用时,异常已经被“处理”(至少在我运行您的代码时,即使我删除了您对打印的调用,我也会看到回溯),因此没有在那个时候被格式化。

于 2012-01-26T21:34:53.553 回答