예제 #1
0
    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")
예제 #2
0
    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")