编程就是折腾,这两天把我折腾坏了。原以为 sys.exit() 函数只要执行一定会退出整个程序的,却发现 sys.exit() 并不保证一定退出程序。大概是一个这样的程序:
原本的意图是发生了预定的状态则退出程序,但是程序执行了 sys.exit() 后却没有正常退出,而是仅退出了 t.run,却继续执行 main 函数的余下循环。
查文档,发现 sys.exit() 函数其实是返回一个 SystemExit 异常,因为 main 函数里的 try 语句屏蔽了异常,所以程序没有退出,而是继续执行下面的语句。如果要立即退出程序可以删掉 main 函数里的try语句,或在 main 函数里加一个 SystemExit 异常的处理,程序就可以退出了。