Python中的崩溃报告

2024-05-29 07:27:40 发布

您现在位置:Python中文网/ 问答频道 /正文

是否存在可用于pure Python Tkinter applicationscrash reporting框架?理想情况下,它应该跨平台工作。在

实际上,这更像是“异常报告”,因为Python解释器本身几乎不会崩溃。在

下面是一个坠机记者的样本:

alt text


Tags: 框架puretkinter报告跨平台情况crash解释器
2条回答

与其到处用try..except污染代码,不如通过设置sys.excepthook实现自己的except钩子。下面是一个例子:

import sys
import traceback

def install_excepthook():
    def my_excepthook(exctype, value, tb):
        s = ''.join(traceback.format_exception(exctype, value, tb))
        dialog = ErrorReportDialog(None, s)
        dialog.exec_()

    sys.excepthook = my_excepthook

在应用程序启动时调用install_exception()。在

ErrorReportDialog是一个Qt对话框。traceback.format_exception()将格式化传递给except钩子的参数,方法与在Python解释器中的方式相同。在

编辑:我忘了提一点问题。它不适用于线程(好吧,至少上次我检查时没有)。对于在另一个线程中运行的代码,您需要将其包装在try..except块中。在

在应用程序可能崩溃的任何地方(I/O、网络等),都要坚持try异常。无论何时调用except,都要调用一个函数来终止旧窗口,生成一个新的tkinter通知窗口,或者带有错误消息的custom one。在

做一个根。后并发送错误报告(urllib)。在

如果你愿意的话,放一个重启按钮。在

没有崩溃报告框架-因为tkinter不是那种GUI。它几乎是简单命令行应用程序的包装器。在

如果您希望在上面的屏幕截图中看到这些特性,请使用pyqt/gtk或wxpython。但我敢肯定,无论你去哪里,你都得自己写记者。在

相关问题 更多 >

    热门问题