我是靠谱客的博主 瘦瘦鞋子,最近开发中收集的这篇文章主要介绍8-PyQt快速开发框架下捕捉莫名其妙异常(界面可以不退出)前言一、PyQt异常情况二、PyQt异常处理三、代码关键点说明,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

文章目录

  • 前言
  • 一、PyQt异常情况
  • 二、PyQt异常处理
  • 三、代码关键点说明


前言

python下采用try即可捕捉异常,都是pyqt5的一些异常可能很难捕捉到。需要采用更底层的方式进行捕捉。


一、PyQt异常情况

先挖坑,以后填:
已知: PyQt特有的异常情况,一般是对其api接口使用不熟悉,里面一些处理要求和顺序不清楚导致PyQt异常(内存溢出等),导致界面闪退。

二、PyQt异常处理

代码如下(示例):

def 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异常处理三、代码关键点说明所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(53)

评论列表共有 0 条评论

立即
投稿
返回
顶部