2014-12-04 24 views
2

第1類:爲什麼程序在調用RuntimeException的方法時未被處理Java中的異常而終止?

package hf; 

public class apples 
{ 
    public static void main(String[] args) 
    { 
     Good good = new Good(); 

     good.method(); 
    } 
} 

二級:

package hf; 

public class Goodie extends NullPointerException 
{ 

} 

3類:

package hf; 

public class Good 
{ 
    public void method() throws Goodie 
    { 
     System.out.println("Goodmethod"); 
     throw new Goodie(); 
    } 
} 

我沒有使用任何的try/catch塊捕獲的NullPointerException(其延伸的RuntimeException)當我在類1中調用good.method()時拋出該錯誤。 當我運行該程序時,Eclipse中的控制檯指示該程序是仍然在運行,因爲它不會顯示在控制檯框的頂部,就像程序執行結束時通常那樣。

爲什麼程序仍在運行?

如何在不按紅色停止按鈕的情況下使程序執行停止?

+3

我認爲還有比這更多的東西。你的程序是否啓動任何線程? – Gimby 2014-12-04 15:29:01

+1

[運行時異常未終止程序]的可能重複(http://stackoverflow.com/questions/7635501/runtime-exception-not-terminating-the-programm) – javaHunter 2014-12-04 15:29:25

回答

4

當您拋出未捕獲的異常時,您發佈的程序將終止。我只是自己測試它。

阻止JVM終止的唯一方法是讓非守護線程運行。例如,如果您已經顯示了GUI,則必須確保您終止EDT以使應用程序完全終止。

0

當我們在Eclipse中以調試模式運行應用程序時,如果設置了Windows->Preferences->Java->Debug->Suspend execution on uncaught exceptions,它將停止未捕獲的異常。

相關問題