MCPcopy Index your code
hub / github.com/MCSLTeam/MCSL2 / catchExceptions

Method catchExceptions

MCSL2Lib/windowInterface.py:226–270  ·  view source on GitHub ↗

全局捕获异常,并弹窗显示 :param ty: 异常的类型 :param value: 异常的对象 :param _traceback: 异常的traceback

(
        self, ty: Type[BaseException], value: BaseException, _traceback: TracebackType
    )

Source from the content-addressed store, hash-verified

224 super().closeEvent(a0)
225
226 def catchExceptions(
227 self, ty: Type[BaseException], value: BaseException, _traceback: TracebackType
228 ):
229 """
230 全局捕获异常,并弹窗显示
231 :param ty: 异常的类型
232 :param value: 异常的对象
233 :param _traceback: 异常的traceback
234 """
235 # 过滤部分异常
236 mode = exceptionFilter(ty, value, _traceback)
237
238 if mode == ExceptionFilterMode.SILENT:
239 return
240
241 if mode == ExceptionFilterMode.PASS:
242 MCSL2Logger.info(f"忽略了异常: {ty} {value} {_traceback}")
243 return
244
245 elif mode == ExceptionFilterMode.RAISE:
246 MCSL2Logger.error(msg=f"捕捉到异常: {ty} {value} {_traceback}")
247 return self.oldHook(ty, value, _traceback)
248
249 elif mode == ExceptionFilterMode.RAISE_AND_PRINT:
250 tracebackString = "".join(format_exception(ty, value, _traceback))
251 MCSL2Logger.error(msg=tracebackString)
252 exceptionWidget = ExceptionWidget(tracebackString)
253 box = Dialog(
254 self.tr("MCSL2 发生未经处理的异常"),
255 content=self.tr("如果有能力可自行解决,无法解决请积极反馈!"),
256 parent=None,
257 )
258 box.titleBar.show()
259 box.setTitleBarVisible(False)
260 box.yesButton.setText(self.tr("确认并复制到剪切板"))
261 box.cancelButton.setText(self.tr("知道了"))
262 del box.contentLabel
263 box.textLayout.addWidget(exceptionWidget.exceptionScrollArea)
264 box.yesSignal.connect(lambda: QApplication.clipboard().setText(tracebackString))
265 box.yesSignal.connect(box.deleteLater)
266 box.cancelSignal.connect(box.deleteLater)
267 box.yesSignal.connect(exceptionWidget.deleteLater)
268 box.cancelSignal.connect(exceptionWidget.deleteLater)
269 box.exec()
270 return self.oldHook(ty, value, _traceback)
271
272 def initPluginSystem(self, firstLoad=True):
273 """初始化插件系统"""

Callers

nothing calls this directly

Calls 5

exceptionFilterFunction · 0.90
ExceptionWidgetClass · 0.90
infoMethod · 0.80
errorMethod · 0.45
addWidgetMethod · 0.45

Tested by

no test coverage detected