我的程序使用Qt的QFileSystemWatcher函数监视网络目录(而不是本地机器本身)的更改,然后在找到更改时运行脚本。在大多数情况下,此功能按要求执行。该程序是设计为运行24/7,这已经提出了一些问题使用这一特殊的功能。
引起问题的错误如下:
QFileSystemWatcher: FindNextChangeNotification failed!! (The specified network name is no longer available.)我想实现的功能如下:
QFileSystemWatcher网络可用性构建错误处理Script()Script()以处理不可用网络考虑到QFileSystemWatcher函数是在程序初始化过程中建立的,我不知道如何进行错误处理。下面是我当前代码的基本大纲:
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'错误建立错误处理?任何输入都将不胜感激!
发布于 2015-05-20 03:29:33
根据ekhumoro上面的评论,我已经使用qInstallMsgHandler和sys.excepthook函数解决了这个问题。
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文件中,通过电子邮件发送给系统管理员,软件将重新启动。谢谢你引导我朝正确的方向前进!
https://stackoverflow.com/questions/30041542
复制相似问题