def exception_hook(self, ex_type: type, ex_value: BaseException, tb: traceback) -> None: # noinspection PyTypeChecker sys.__excepthook__(ex_type, ex_value, tb) # first manage case of not being an exception (e.g., keyboard interrupts) if not issubclass(ex_type, Exception): msg = str(ex_value) if not msg: msg = ex_value.__class__.__name__ logger.info(msg) self.close() return dlg = ExceptionDialog(app_info=app_info, lib_info=lib_info, ex_type=ex_type, ex_value=ex_value, tb=tb) ret = dlg.exec_() if ret == QtWidgets.QDialog.Rejected: if not dlg.user_triggered: self.close() else: logger.warning("ignored exception")
def show_exception_dialog(self, params): _app_info, _lib_info, ex_type, ex_value, tb = params dlg = ExceptionDialog(app_info=_app_info, lib_info=_lib_info, ex_type=ex_type, ex_value=ex_value, tb=tb) ret = dlg.exec_() if ret == QtWidgets.QDialog.Rejected: if not dlg.user_triggered: self.close() else: logger.warning("ignored exception")