1. 程式人生 > >sys.exit() 也可能不會退出程式

sys.exit() 也可能不會退出程式

程式設計就是折騰,這兩天把我折騰壞了。原以為 sys.exit() 函式只要執行一定會退出整個程式的,卻發現 sys.exit() 並不保證一定退出程式。大概是一個這樣的程式:

原本的意圖是發生了預定的狀態則退出程式,但是程式執行了 sys.exit() 後卻沒有正常退出,而是僅退出了 t.run,卻繼續執行 main 函式的餘下迴圈。

查文件,發現 sys.exit() 函式其實是返回一個 SystemExit 異常,因為 main 函式裡的 try 語句遮蔽了異常,所以程式沒有退出,而是繼續執行下面的語句。如果要立即退出程式可以刪掉 main 函式裡的try語句,或在 main 函式里加一個 SystemExit 異常的處理,程式就可以退出了。