2012-01-26 50 views
3

我正在嘗試記錄導致我的進程關閉的錯誤,但traceback.print_tbtraceback.print_exc似乎沒有意識到引發的錯誤是什麼。在已註冊的atexit函數中獲取錯誤追蹤

換句話說,爲什麼下面的print'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 
+0

這可能有所幫助:http://stackoverflow.com/questions/9741351/how-to-find-exit-code-or-reason-when-atexit-callback-is-called-in-python – e9t

回答

1

我相信,你的程序已經被調用的時候,除了已經被「處理」 (至少當我運行你的代碼時,即使我刪除了你的調用來打印一個,我也會看到一個回溯),因此在那個時候沒有任何格式化。