我尝试退出脚本,但它没有退出。
这是我的代码:
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!
为什么?
您正在SystemExit
通过一揽子except
条款发现例外情况。不要那样做。始终指定您希望避免这些事情的例外情况。
sys.exit()
是通过引发SystemExit
异常来实现的,因此由 finally 指定的清理操作,try 语句的 except 子句得到尊重,并且可以在外部级别拦截退出尝试。
在您的示例SystemExit
中,被以下except
语句捕获。
如果你确实需要立即退出,并且想跳过正常的退出处理,那么你可以使用os._exit(status)
. 但是,正如其他人所说,使用正常路径退出通常要好得多,而不是捕获SystemExit
异常。当我们谈到这个话题时,KeyboardInterrupt
您可能不想抓住另一个例外。(使用except Exception
不会捕获SystemExit
或KeyboardInterrupt
。)