From d6f368ae50a05a137c8424bb390f531157cf417a Mon Sep 17 00:00:00 2001 From: samuel-w Date: Tue, 15 Dec 2020 21:03:24 -0600 Subject: [PATCH] Improve exception handling. By @samuel-w (#628) --- src/vorta/__main__.py | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/src/vorta/__main__.py b/src/vorta/__main__.py index 19af00c3..14378754 100644 --- a/src/vorta/__main__.py +++ b/src/vorta/__main__.py @@ -5,13 +5,32 @@ import sys import peewee from vorta._version import __version__ from vorta.config import SETTINGS_DIR -from vorta.log import init_logger +from vorta.log import init_logger, logger from vorta.models import init_db from vorta.updater import get_updater from vorta.utils import parse_args def main(): + def exception_handler(type, value, tb): + from traceback import format_exception + from PyQt5.QtWidgets import QMessageBox + logger.critical("Uncaught exception, file a report at https://github.com/borgbase/vorta/issues/new", + exc_info=(type, value, tb)) + full_exception = ''.join(format_exception(type, value, tb)) + if app: + QMessageBox.critical(None, + app.tr("Fatal Error"), + app.tr( + "Uncaught exception, please file a report with this text at\n" + "https://github.com/borgbase/vorta/issues/new\n") + full_exception) + else: + # Crashed before app startup, cannot translate + sys.exit(1) + + sys.excepthook = exception_handler + app = None + args = parse_args() signal.signal(signal.SIGINT, signal.SIG_DFL) # catch ctrl-c and exit