我尝试退出脚本,但它不退出。我退出()脚本,但它不退出
这里是我的代码:
import sys
try:
...
print "I'm gonna die!"
sys.exit()
except:
...
print 'Still alive!'
而且结果是:
I'm gonna die!
Still alive!
为什么?
我尝试退出脚本,但它不退出。我退出()脚本,但它不退出
这里是我的代码:
import sys
try:
...
print "I'm gonna die!"
sys.exit()
except:
...
print 'Still alive!'
而且结果是:
I'm gonna die!
Still alive!
为什么?
如果你真的需要立即退出,并且想跳过正常的退出处理,那么你可以使用os._exit(status)
。但是,正如其他人所说的那样,使用正常路径退出通常要好得多,并且只是没有捕获到异常。当我们谈论这个话题时,KeyboardInterrupt
是另一个你可能不希望看到的例外。 (使用except Exception
将不会捕获SystemExit
或KeyboardInterrupt
。)
您正在使用您的毯子except
子句捕捉SystemExit
例外。不要这样做。总是指定你期望避免这些事情的例外。
在这种情况下'except Exception'就足够了,因为'SystemExit'不会继承那个... – 2013-04-22 13:04:13
sys.exit()
是通过引发SystemExit
异常来实现的,所以清除最后指定的动作,除了try语句的子句外,并且可以在外层拦截退出尝试。
在你的例子中,SystemExit
被以下except
语句捕获。
谢谢!这是我在这种情况下真正需要的。 – 2013-04-23 22:27:05