2014-12-04 33 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,它将停止未捕获的异常。

相关问题