Подтвердить что ты не робот

Как использовать контрольные точки исключения Intellij Idea

Это кажется глупым вопросом, но я не могу понять, как отлаживать исключения в Intellij Idea. Googling тоже не помогает.

Я пытаюсь создать контрольные точки исключения. Когда IDEA ломается, я ожидаю, что он даст мне стек вызовов, показывающий, что приводит к методу, который генерирует исключение, а также автоматическое окно просмотра, подобно инструменту отладки Visual Studio. Вместо этого он показывает все виды искаженных сообщений о Launcher или ClassLoader, но никаких признаков фактического исключения во время выполнения.

Итак, как именно должна использоваться точка останова исключения IDEA?

4b9b3361

Ответ 1

Я, наконец, понял сам. В окнах View Breakpoints отметьте Any Exception, но снимите отметку для Caught exception. Исключения запуска и класса загрузчика пойманы и обрабатываются внутри JVM. Таким образом, любые пользовательские исключения будут пойманы без ручного указания типа исключения.

Ответ 2

Он работает очень хорошо, и я не знаю, какие проблемы у вас есть с Launcher или ClassLoader. Возможно, вы выбрали catch Any exceptions, и это означает, что он будет захватывать всевозможные исключения во время загрузки и загрузки классов. Вы должны сделать конкретный выбор о том, какие исключения поймать, или просто пройти через все их до тех пор, пока не будет обнаружено ваше исключение.

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

У меня есть простой случай, когда будет сброшен a NullPointerException.

Сначала вам нужно настроить контрольную точку исключения.

Войдите в окно View Breakpoints..., нажав Ctrl + Shift + F8. Затем нажмите маленький знак + в верхнем левом углу.

enter image description here

Введите исключение NullPointerException и нажмите кнопку OK.

enter image description here

Убедитесь, что параметр Any exception не установлен.

Теперь запустите программу, щелкнув правой кнопкой мыши внутри основного метода и выберите Debug 'SomeClass.main()'

enter image description here

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

enter image description here