我是靠谱客的博主 瘦瘦鞋子,这篇文章主要介绍8-PyQt快速开发框架下捕捉莫名其妙异常(界面可以不退出)前言一、PyQt异常情况二、PyQt异常处理三、代码关键点说明,现在分享给大家,希望可以做个参考。
文章目录
- 前言
- 一、PyQt异常情况
- 二、PyQt异常处理
- 三、代码关键点说明
前言
python下采用try即可捕捉异常,都是pyqt5的一些异常可能很难捕捉到。需要采用更底层的方式进行捕捉。
一、PyQt异常情况
先挖坑,以后填:
已知: PyQt特有的异常情况,一般是对其api接口使用不熟悉,里面一些处理要求和顺序不清楚导致PyQt异常(内存溢出等),导致界面闪退。
二、PyQt异常处理
代码如下(示例):
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44def handleException(exc_type, exc_value, exc_traceback): ''' 使用方法在入口位置,最开始位置(sys.exit(app.exec_())之前 )加入这一行 sys.excepthook = handle_exception 类似:import cgitb cgitb.enable(format='txt') Args: exc_type: exc_value: exc_traceback: Returns: ''' if issubclass(exc_type, KeyboardInterrupt): return sys.__excepthook__(exc_type, exc_value, exc_traceback) exception = str("".join(traceback.format_exception( exc_type, exc_value, exc_traceback))) dialog = QtWidgets.QDialog() # close对其进行删除操作 dialog.setAttribute(QtCore.Qt.WA_DeleteOnClose) msg = QtWidgets.QMessageBox(dialog) msg.setIcon(QtWidgets.QMessageBox.Critical) msg.setText('程序异常,请联系管理员!') msg.setWindowTitle("系统异常提示") msg.setDetailedText(exception) msg.setStandardButtons(QtWidgets.QMessageBox.Ok) msg.exec_() def main(): r = None try: app = QtWidgets.QApplication(sys.argv) sys.excepthook = handleException #import cgitb #cgitb.enable(format='txt') win = LoginWindow() win.show() r=app.exec_() print("app exec:",r) except: traceback.print_exc() from pubunit.file import resourcePath with open(resourcePath('client/main.log'), 'a') as f: traceback.print_exc(file=f) sys.exit(r)
三、代码关键点说明
1.注意代码顺序!
2.用sys.excepthook捕捉异常,并异常处理逻辑由handleException实现。
3.其他异常捕捉方法可以自行研究
import cgitb
cgitb.enable(format=‘txt’)
也应该可以实现异常捕捉
最后
以上就是瘦瘦鞋子最近收集整理的关于8-PyQt快速开发框架下捕捉莫名其妙异常(界面可以不退出)前言一、PyQt异常情况二、PyQt异常处理三、代码关键点说明的全部内容,更多相关8-PyQt快速开发框架下捕捉莫名其妙异常(界面可以不退出)前言一、PyQt异常情况二、PyQt异常处理三、代码关键点说明内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复