3

プロセスがシャットダウンする原因となったエラーをログに記録しようとしていますが、発生したエラーが何であるかを認識しtraceback.print_tbtraceback.print_excいないようです。

言い換えれば、次のように出力すると、'DivisionByZero .. etc ..' ではなく 'None\n' と表示されるのはなぜですか? (編集: ..そして、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 に答える