gpt4 book ai didi

python - 设计健全性检查

转载 作者:太空宇宙 更新时间:2023-11-03 19:10:18 24 4
gpt4 key购买 nike

我有一个基于 GUI 的项目。我想将其远离代码本身和 GUI 部分。

这是我的代码:Main.py:

class NewerVersionWarning(Exception):
def __init__(self, newest, current=__version__):
self.newest = newest
self.current = current
def __str__(self):
return "Version v%s is the latest version. You have v%s." % (self.newest, self.current)

class NoResultsException(Exception):
pass

# ... and so on
def sanity_check():
"Sanity Check for script."
try:
newest_version = WebParser.WebServices.get_newestversion()
if newest_version > float(__version__):
raise NewerVersionWarning(newest_version)
except IOError as e:
log.error("Could not check for the newest version (%s)" % str(e))

if utils.get_free_space(config.temp_dir) < 200*1024**2: # 200 MB
drive = os.path.splitdrive(config.temp_dir)[0]
raise NoSpaceWarning(drive, utils.get_free_space(config.temp_dir))

# ... and so on

现在,在 GUI 部分,我只需在 try- except block 中调用该函数:

    try:
Main.sanity_check()
except NoSpaceWarning, e:
s = tr("There are less than 200MB available in drive %s (%.2fMB left). Application may not function properly.") % (e.drive, e.space/1024.0**2)
log.warning(s)
QtGui.QMessageBox.warning(self, tr("Warning"), s, QtGui.QMessageBox.Ok)
except NewerVersionWarning, e:
log.warning("A new version of iQuality is available (%s)." % e.newest)
QtGui.QMessageBox.information(self, tr("Information"), tr("A new version of iQuality is available (%s). Updates includes performance enhancements, bug fixes, new features and fixed parsers.<br /><br />You can grab it from the bottom box of the main window, or from the <a href=\"%s\">iQuality website</a>.") % (e.newest, config.website), QtGui.QMessageBox.Ok)

在当前设计中,检查在第一次警告/异常时停止。当然,异常应该停止代码,但警告应该只向用户显示一条消息,然后继续。我怎样才能这样设计呢?

最佳答案

也许你应该看看 Python 的 warning mechanism .

它应该允许您在不停止程序的情况下警告用户危险情况。

关于python - 设计健全性检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13217195/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com