我用Python (2.7 &3.2)读取三个文件,并根据这些文件生成一些代码。在代码中,我进行了几个输入文件检查,以捕获用户的任何输入错误。如果程序捕捉到输入错误,我使用os.sys.exit()命令停止处理并发出错误消息。我主要是使用IDLE的过程,这工作得很好。
现在我已经为该程序开发了一个GUI,以便使用PYQT4进行部署。用户使用GUI输入所有必要的输入文件和条件,然后GUI调用我用必要的参数生成的早期代码。
然而,我发现如果用户在输入文件中犯了错误,当早期的代码捕获这些错误并执行os.sys.exit()时,GUI本身完全关闭;这并不好。
我对GUI中的输入文件引入了相同的检查,因此,如果这些检查被捕获,它们将在GUI中处理,而不是由代码处理。但是在代码中发生的某些处理检查是GUI无法访问的。
问题:是否有一种方法可以使被调用的代码停止运行,打印错误消息(例如到日志文件;(我已经在使用),而不会导致GUI完全退出?
谢谢,
注意:此时代码太大,我无法将其作为一个类集成到GUI中。
我认为您不能或不愿意更改您的CLI程序,而是希望在GUI中捕获sys.exit
引发的异常。方法如下:
import os
try:
os.sys.exit()
except SystemExit as err:
print('Caught ya')
你试过在python中处理异常吗?
try:
#some code here
except Exception:
print 'Something bad happened'
最好尝试捕捉特定的异常。内置异常列表http://docs.python.org/library/exceptions.html#bltin-exceptions