трассировка исключений Java - PullRequest
3 голосов
/ 21 июня 2010

Когда я выполняю приведенный ниже код, я вижу вывод:

Наконец

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

Кто печатает полужирные выражения.

public class ClientTestConcepts {
    public static void main(String []args){
        try{
            throw new NullPointerException();
        }
        finally{
            System.out.println("Finally");
        }
    }
}

Ответы [ 2 ]

7 голосов
/ 21 июня 2010

Среда выполнения Java.

Он перехватывает все исключения, не обработанные в коде пользователя, и выводит их в вывод ошибок (по умолчанию).

3 голосов
/ 21 июня 2010

Каждый поток имеет обработчик неперехваченных исключений по умолчанию, который запускается, когда исключение попадает в верхнюю часть стека.Тот, который вы наблюдаете, предоставляется ThreadGroup.uncaughtException :

Вызывается виртуальной машиной Java, когда поток в этой группе потоков останавливается из-за неперехваченного исключения и потокане установлен определенный Thread.UncaughtExceptionHandler.

Метод uncaughtException ThreadGroup выполняет следующие действия: (...)
... сообщение, содержащее имя потока, возвращаемое из метода getName потока, и обратную трассировку стека с использованием printStackTrace из Throwableметод, выводится на стандартный поток ошибок.

Если вам нужно другое поведение, зарегистрируйте необработанный обработчик исключений для потока.

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