我是靠谱客的博主 瘦瘦鞋子,最近开发中收集的这篇文章主要介绍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异常处理三、代码关键点说明所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复