【问题标题】:Why does the program not terminate when a method that throws RuntimeException is called without handling the exception in Java?为什么调用抛出 RuntimeException 的方法而不处理 Java 中的异常时程序不会终止?
【发布时间】:2014-12-04 15:24:09
【问题描述】:

第 1 类:

package hf;

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

        good.method();
    }
}

第 2 类:

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 块来捕获在类 1 中调用 good.method() 时引发的 NullPointerException(扩展 RunTimeException)。 当我运行程序时,Eclipse 中的控制台指示程序仍在运行,因为它没有显示在控制台框的顶部,就像程序执行结束时通常那样。

为什么程序还在运行?

如何在不按下红色停止按钮的情况下停止程序执行?

【问题讨论】:

标签: java exception-handling


【解决方案1】:

当您抛出未捕获的异常时,您发布的程序将终止。我自己测试了一下。

防止 JVM 终止的唯一方法是让非守护线程运行。例如,如果您已显示 GUI,则必须确保终止 EDT 以使应用程序完全终止。

【讨论】:

    【解决方案2】:

    当我们在 Eclipse 中以调试模式运行应用程序时,如果设置了Windows->Preferences->Java->Debug->Suspend execution on uncaught exceptions,它将停止未捕获的异常。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-10-04
      • 2013-02-09
      • 1970-01-01
      • 1970-01-01
      • 2010-09-25
      • 2014-09-18
      相关资源
      最近更新 更多