Перехват исключений в главном поднятом при запуске приложения PyQt - PullRequest
0 голосов
/ 07 сентября 2018

Предположим, у нас есть эта простая основная программа:

from matplotlib.backends.qt_compat import QtWidgets
from initial import InitialWindow

if __name__ == '__main__':
    try:
        app = QtWidgets.QApplication([])
        ex = InitialWindow()
        ex.show()
        app.exec_()
    except:
        # Do something
        print('Hello')

Запускаемое приложение довольно сложное, и создается несколько окон. Делать обработчик исключений для каждого класса, который работает внутри, довольно утомительно, поэтому я подумал, есть ли способ отловить любое исключение, сгенерированное во время выполнения app в основном, и сделать что-то перед Завершение программы.

Есть ли способ достичь этого?

1 Ответ

0 голосов
/ 07 сентября 2018

Вы можете создать свой собственный обработчик ошибок, который будет фиксировать стандартную ошибку. Например, вот так;

import sys
import traceback

from matplotlib.backends.qt_compat import QtWidgets
from initial import InitialWindow


def error_handler(etype, value, tb):
    error_msg = ''.join(traceback.format_exception(etype, value, tb))
    # do something with the error message, for example print it 


if __name__ == '__main__':
    sys.excepthook = error_handler  # redirect std error

    app = QtWidgets.QApplication([])
    ex = InitialWindow()
    ex.show()
    app.exec_()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...