如何在引发异常后重启PyQt应用程序

时间:2018-05-14 13:18:27

标签: python exception-handling pyqt4 application-restart

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

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

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

1 个答案:

答案 0 :(得分:2)

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

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

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

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