【问题标题】:How to restart PyQt application after exception is raised引发异常后如何重新启动 PyQt 应用程序
【发布时间】:2018-10-24 04:07:33
【问题描述】:

我在代码的异常中构建了一些错误对话框。一切正常,除了程序在异常之后继续执行代码。于是我内置了sys.exit()

try:
    hdf = pd.HDFStore(filepath_hdf)
except:
    QMessageBox.about(self, 'Error!','Filepath can't be read')
    sys.exit()

不幸的是,这会关闭整个应用程序。引发异常时,如何“重新启动”应用程序?我的意思是如何回到应用程序的起点?

【问题讨论】:

    标签: python exception-handling pyqt4 application-restart


    【解决方案1】:

    这就是try/except 语句的else 子句的用途:

    try:
        hdf = pd.HDFStore(filepath_hdf)
    except:
        QMessageBox.warning(self, 'Error', 'Filepath cannot be read')
    else:
        # do normal stuff here...
    

    如果发生错误,则不需要重新启动整个应用程序,除非该错误确实是致命的(这意味着它实际上不可能继续运行,因此需要立即关闭)。异常处理的重点是能够优雅地从非致命错误中恢复。

    没有将应用程序返回到其起始状态的通用方法。每个应用程序都是不同的,因此您需要编写自己的“重置”方法来清除当前状态并在适当的地方重新初始化某些 gui 元素。这种“重置”方法很可能看起来很像您已经在使用的一些设置/初始化代码。因此,只需将该代码重构为一个单独的方法,该方法将在应用程序启动时调用,然后在需要重置时调用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-15
      • 2014-02-13
      • 1970-01-01
      • 2019-11-04
      • 1970-01-01
      • 2013-10-20
      相关资源
      最近更新 更多