2016-10-02 36 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

相关问题