簡體   English   中英

為什么在不處理Java中異常的情況下調用引發RuntimeException的方法時,程序不會終止?

[英]Why does the program not terminate when a method that throws RuntimeException is called without handling the exception in Java?

第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中的控制台指示該程序仍在運行因為它不顯示在控制台框的頂部,就像程序執行結束時通常會顯示的那樣。

為什么程序仍在運行?

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

當您引發未捕獲的異常時,您發布的程序將終止。 我只是自己測試過。

防止JVM終止的唯一方法是運行非守護程序線程。 例如,如果顯示了GUI,則必須確保將EDT終止為該應用程序才能完全終止。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM