首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PySide/PyQt-Python3.x中的QFileSystemWatcher错误处理

PySide/PyQt-Python3.x中的QFileSystemWatcher错误处理
EN

Stack Overflow用户
提问于 2015-05-04 23:10:40
回答 1查看 710关注 0票数 1

我的程序使用Qt的QFileSystemWatcher函数监视网络目录(而不是本地机器本身)的更改,然后在找到更改时运行脚本。在大多数情况下,此功能按要求执行。该程序是设计为运行24/7,这已经提出了一些问题使用这一特殊的功能。

引起问题的错误如下:

代码语言:javascript
复制
QFileSystemWatcher: FindNextChangeNotification failed!! (The specified network name is no longer available.)

我想实现的功能如下:

  1. 围绕QFileSystemWatcher网络可用性构建错误处理
  2. 如果网络不可用并引发错误,请转到Script()
  3. 运行Script()以处理不可用网络

考虑到QFileSystemWatcher函数是在程序初始化过程中建立的,我不知道如何进行错误处理。下面是我当前代码的基本大纲:

代码语言:javascript
复制
class Main(QMain, Ui_Main):
    def __init__(self, parent=None):
        super(Main, self).__init__(parent)
        self.setupUi(self)

        self.DirectoryWatcher = QtCore.QFileSystemWatcher([r'U:\NetworkAddress\Directory'])
        self.DirectoryWatcher.directoryChanged.connect(self.GoToThisDirectory)

    def GoToThisDirectory(self):
        print("foo")

是否有一种方法显式地为'FindNextChangeNotification'错误建立错误处理?任何输入都将不胜感激!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-20 03:29:33

根据ekhumoro上面的评论,我已经使用qInstallMsgHandler和sys.excepthook函数解决了这个问题。

代码语言:javascript
复制
import sys
import os
from PySide.QtCore import qInstallMsgHandler

def myCustomHandler(ErrorType, ErrorContext):
    print("Qt error found.")
    print("Error Type: " + str(ErrorType))
    print("Error Context: " + str(ErrorContext))

    #Error logging code
    #Error emailing code

    os.execv(sys.executable, [sys.executable] + sys.argv)

qInstallMsgHandler(myCustomHandler)

def ErrorHandling(ErrorType, ErrorValue, TraceBack):
    print("System error found.")
    print("Error Type: " + str(ErrorType))
    print("Error Value: " + str(ErrorValue))
    print("Traceback: " + str(TraceBack))

    #Error logging code
    #Error emailing code

    os.execv(sys.executable, [sys.executable] + sys.argv)

sys.excepthook = ErrorHandling

#Rest of the script

我的解决方案分别处理Qt和Python/系统相关错误,但处理方法相同。错误记录在.log文件中,通过电子邮件发送给系统管理员,软件将重新启动。谢谢你引导我朝正确的方向前进!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30041542

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档