我是靠谱客的博主 瘦瘦鞋子,这篇文章主要介绍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异常处理三、代码关键点说明内容请搜索靠谱客的其他文章。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部