如何在不导致GUI崩溃的情况下停止由于输入错误而运行的代码

时间:2011-10-04 19:05:19

标签: python pyqt4 exit

我有一个用Python(2.7和3.2)开发的程序,它读取三个文件并根据这些文件生成一些代码。在代码中,我有几个输入文件检查来捕获用户的任何输入错误。如果程序捕获输入错误,我使用os.sys.exit()命令停止处理并发出错误消息。我主要使用IDLE进行处理,这很好用。

现在我已经为使用PYQT4进行部署的程序开发了一个GUI。用户使用GUI输入所有必要的输入文件和条件,然后GUI调用我使用必要参数生成的早期代码。

但是,我发现如果用户在输入文件中出错,当早期代码捕获这些错误并执行os.sys.exit()时,GUI本身就会完全关闭;这不好。

我在GUI中对输入文件进行了相同的检查,因此如果这些检查被捕获,它们将在GUI内处理,而不是由代码处理。但是,在GUI无法访问它们的代码中会发生某些处理检查。

问题:有没有办法让被叫代码停止运行,打印错误消息(例如,我已经使用过的日志文件),而不会导致GUI完全退出?

谢谢,

注意:此时代码太大,我无法将其作为类集成到GUI中。

2 个答案:

答案 0 :(得分:3)

我假设您不能或不想更改CLI程序,而是希望在GUI中捕获sys.exit引发的异常。方法如下:

import os
try:
   os.sys.exit()
except SystemExit as err:
   print('Caught ya')

答案 1 :(得分:0)

您是否尝试过在python中处理异常。

try:
   #some code here
except Exception:
   print 'Something bad happened'

最好尝试捕获特定的异常。 内置例外列表http://docs.python.org/library/exceptions.html#bltin-exceptions