2016-10-02 50 views
3

我一直在搜索谷歌,以某種方式捕獲由Python應用程序生成的任何回溯。是否有可能捕獲由Python應用程序生成的任何回溯?

如果發生任何錯誤(這會產生回溯(而不是依賴用戶向我報告問題)),我想向我發送電子郵件/鬆弛/通知。

我還沒有找到任何東西which doesn't involve you doing a try/except。但是我當然不能把我所做的一切都放在單獨的try/except子句中,因爲我正在編寫啓動UI的應用程序(PySide/PyQt4/PySide2/PyQt5),並且可能會在用戶交互時出錯。

這是可能的,如果是這樣,我怎麼能捕獲生成的任何回溯?

+0

您可以解析會檢測到異常並向您發送電子郵件的日誌。或者,你可以嘗試使用哨兵https://pypi.python.org/pypi/sentry? –

回答

4

,您可以輕鬆創建自定義sys.excepthook做到這一點:

import sys 
import traceback 


def report_exception(exc_type, exc_value, exc_tb): 
    # just a placeholder, you may send an e-mail here 
    print("Type", exc_type) 
    print("Value", exc_value) 
    print("Tb", ''.join(traceback.format_tb(exc_tb))) 


def custom_excepthook(exc_type, exc_value, exc_tb): 
    report_exception(exc_type, exc_value, exc_tb) 
    sys.__excepthook__(exc_type, exc_value, exc_tb) # run standard exception hook 


sys.excepthook = custom_excepthook 

raise RuntimeError("I want to report exception here...") 

對於漂亮的印刷追蹤的對象是指traceback模塊。

+0

這很好,謝謝! – fredrik

相關問題