您的位置:首页 > 其它

sys.exit() 也可能不会退出程序

2009-06-30 10:08 357 查看
编程就是折腾,这两天把我折腾坏了。原以为 sys.exit() 函数只要执行一定会退出整个程序的,却发现 sys.exit() 并不保证一定退出程序。大概是一个这样的程序:

import sys
class test:
def __init__(self):
print 'begin'
def run(self, i):
print i
if i == 5:
sys.exit()
def main():
t = test()
for i in range(10):
try:
t.run(i)
except SystemExit:
return
except:
pass
if __name__ == '__main__':
main()


原本的意图是发生了预定的状态则退出程序,但是程序执行了 sys.exit() 后却没有正常退出,而是仅退出了 t.run,却继续执行 main 函数的余下循环。

查文档,发现 sys.exit() 函数其实是返回一个 SystemExit
异常,因为 main 函数里的 try 语句屏蔽了异常,所以程序没有退出,而是继续执行下面的语句。如果要立即退出程序可以删掉 main 函数里的try语句,或在 main 函数里加一个 SystemExit
异常的处理,程序就可以退出了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: