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

来源:互联网 发布:911事件前因后果知乎 编辑:程序博客网 时间:2024/05/17 09:10

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

 

 

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

 

查文档,发现 sys.exit() 函数其实是返回一个 SystemExit异常,因为 main 函数里的 try 语句屏蔽了异常,所以程序没有退出,而是继续执行下面的语句。如果要立即退出程序可以删掉 main 函数里的try语句,或在 main 函数里加一个 SystemExit异常的处理,程序就可以退出了。