2012-01-26 5 views
3

私のプロセスがシャットダウンする原因となったエラーをログに記録しようとしていますが、traceback.print_tbtraceback.print_excは発生したエラーを認識していないようです。登録されたatexit関数でエラートレースバックを取得する

つまり、「DivisionByZero ..など」の代わりに「None \ n」と表示されるのはなぜですか? (編集:?..and私は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 
私はあなたのルーチンが呼び出された時点で、例外はすでに「扱い」されている、と信じている
+0

これは役立ちます:http://stackoverflow.com/questions/9741351/how-to-find-exit-code-or-reason-when-atexit-callback-is-called-in-python – e9t

答えて

1

(少なくとも私はあなたのコードを実行すると、私はあなたが1つを呼び出すためにあなたの呼び出しを取り除いてもトレースバックを見るので)、その時点でフォーマットされることはありません。

関連する問題