2015-11-03 94 views
-3

爲什麼最後這段代碼不會執行?它只打印1.在System.exit(0);之後終於阻止不執行?爲什麼finally塊不能執行?

void method2() { 
    try { 
     System.out.println("1"); 
     System.exit(0); 
    } finally { 
     System.out.println("3"); 
    } 
} 
+2

閱讀文檔... – redFIVE

+0

代碼在應用程序終止後不會繼續執行。你爲什麼會這麼想? – David

回答

2

System.exit(0)實際上完全停止了程序的執行。刪除System.exit,因爲您並未嘗試退出您的代碼。

1

刪除SYSTEM.EXIT,因爲它會退出整個程序,而不管後面有什麼。儘管它仍然在嘗試它仍然進入代碼塊:)

0

System.exit(0)finally塊甚至被執行之前終止運行時間。在System.out之後將其移至finally區塊。

0

System.exit();關閉虛擬機。在此之後唯一可以執行的操作是使用Runtime.addShutdownHook(Thread)創建的關閉掛鉤。