Вывод необработанного исключения в программе Java - PullRequest
0 голосов
/ 04 октября 2018

Следующая программа

public class Test {

    public static void main(String[] args) {

        try
        {
            String t = null;
            t.toString();

        } catch(Exception e) {
            e.printStackTrace();
        }
    }
}

Печать в консоли:

java.lang.NullPointerException at Test.main (Test.java:9)

И следующая программа

public class Test {

    public static void main(String[] args) {

        String t = null;
        t.toString();
    }

}

Печать в консоли:

Исключение в потоке "main" java.lang.NullPointerException в Test.main (Test.java:7)

В чем разница между этими двумя отпечатками консоли?

Ответы [ 2 ]

0 голосов
/ 04 октября 2018

Разница между ними заключается в том, что в первом примере вы поймали исключение и напечатали трассировку стека исключений.После печати ваша программа продолжит работу в обычном режиме (в данном случае: выход).

Во втором примере вы не поймаете исключение, текущий запущенный поток (основной поток) внезапно завершается (что в вашем коде).также завершает программу), и обработчик необработанных исключений потока выводит исключение с префиксом с текстом 'Исключение в потоке "main"' .

0 голосов
/ 04 октября 2018

Чтобы узнать разницу, сначала мы должны понять, что происходит, если исключение не обрабатывается в JAVA.

Вы можете сослаться на https://www.javamex.com/tutorials/exceptions/exceptions_uncaught_handler.shtml, чтобы понять это.

Основываясь на приведенной выше ссылке, мы можем сказать, что здесь нет существенных различий, поскольку вторая часть вашего вопроса также будет вызывать трассировку стека, но к ней будет добавлено имя потока.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...