我退出()一个脚本,但它不会退出

时间:2013-04-22 13:02:08

标签: python

我尝试退出脚本,但它没有退出。

这是我的代码:

import sys

try:
    ...
    print "I'm gonna die!"
    sys.exit()
except:
    ...

print 'Still alive!'

结果是:

I'm gonna die!
Still alive!

为什么?

3 个答案:

答案 0 :(得分:22)

您正在使用全局SystemExit子句捕获except例外。不要那样做。始终指定您希望避免这些事情的例外情况。

答案 1 :(得分:1)

sys.exit()是通过引发SystemExit异常来实现的,因此最终指定的清理操作除了try语句的子句之外,并且可以拦截外层的退出尝试。

在您的示例中SystemExit由以下except语句捕获。

答案 2 :(得分:1)

如果确实需要立即退出,并希望跳过正常退出处理,则可以使用os._exit(status)。但是,正如其他人所说,使用正常路径退出通常要好得多,而不是抓住SystemExit异常。虽然我们讨论的是主题,但KeyboardInterrupt是您可能不想捕获的另一个例外。 (使用except Exception将无法抓住SystemExitKeyboardInterrupt。)