前提條件:代碼進入到與finally配套的try/catch語句中。
1.寫入代碼:System.exit(0),它表示退出當前Java虛擬機,一旦退出Java虛擬機,任何代碼都不會再執行。
2.線程被終止或打斷:如果當一個線程在執行 try 語句塊或者 catch 語句塊時被打斷(interrupted)或者被終止(killed),與其相對應的 finally 語句塊可能不會執行。還有更極端的情況,就是在線程運行 try 語句塊或者 catch 語句塊時,突然死機或者斷電,finally 語句塊肯定不會執行了。
3.當線程爲守護線程時,如果主線程死亡了,finally也不會執行的。