Отчеты о сбоях в Python

Существует ли система отчетов о сбоях , которую можно использовать для чистых приложений Python Tkinter ? В идеале он должен работать кроссплатформенным.

С практической точки зрения, это скорее «сообщение об исключениях», поскольку сам интерпретатор Python почти не дает сбоев.

Вот образец сообщения о сбоях:

alt text

6
задан John Doe 21 June 2015 в 02:34
поделиться

2 ответа

Вместо того, чтобы загрязнять ваш код повсюду попыткой , кроме , вы должны просто реализовать свой собственный, кроме крюка, установив sys.excepthook . Вот пример:

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 hook точно так же, как и в интерпретаторе Python.

EDIT: Я забыл упомянуть об этом немного. Она не работает с потоками (ну, по крайней мере, в последний раз я не проверял). Для кода, запущенного в другом потоке, его нужно обернуть в блок try...except.

.
7
ответ дан 10 December 2019 в 02:48
поделиться

Stick try исключает исключения везде, где ваше приложение может аварийно завершить работу (ввод/вывод, работа в сети и т.д.). Всякий раз, когда вызывается исключение, вызывайте функцию, которая убьет старое окно, создаст новое окно уведомления о тикинге, или пользовательское с вашим сообщением об ошибке.

Сделайте root.after в новом окне и отправьте сообщение об ошибке (urllib).

Поставьте кнопку перезапуска, если хотите.

Нет никакой системы оповещения об ошибках - так как tkinter не является таким типом GUI. Это практически обертка для простых приложений командной строки.

Go pyqt/gtk или wxpython, если вы хотите, чтобы функции были видны на скриншоте выше. Но я уверен, что куда бы вы ни пошли, вам придется написать свой собственный репортер.

.
2
ответ дан 10 December 2019 в 02:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: