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

Точка останова при исключении в Eclipse - как проверить объект Exception?

Я чувствую, что мне не хватает чего-то очень простого здесь. У меня Eclipse настроен для прерывания всех исключений. Итак, скажем, что он разбивается на AssessionFailedException. Окно Debug покажет, что поток приостановлен и имеет следующие данные:

Thread [Thread-1] (Suspended (exception AssertionFailedException)) 
    ContactManager.addContact(String) line: 93  
    ContactManager$ContactDataCallback.dispatch(String, Element, ClientConnector) line: 118 
    PacketHandler.handle(FractusPacket) line: 173   
    ServerConnection.syncProcess(FractusMessage) line: 122  
    ServerConnection.run() line: 248    
    Thread.run() line: 636

Однако текст, который я ищу, например: "Getter вызывается вне области наблюдаемого [email protected]", недоступен до тех пор, пока я не перейду через исключение (таким образом, распространяя его полностью вверх по стеку), где он выводит тип исключение, текст (который является частью, которую я хочу) и трассировку стека.

Как я могу просмотреть "AssessionFailedException" (или любое другое исключение), чтобы получить сообщение, с помощью которого было создано исключение? Конечно, я в перспективе Debug.

4b9b3361

Ответ 1

В настройках Eclipse есть опция, позволяющая проверять возникшее исключение:

Проверьте Java -> Debug -> Open popup when suspended on exception

С помощью этой опции появится всплывающее окно, позволяющее проверить исключение.

Странно, что эта опция не проверяется по умолчанию, поскольку она очень полезна!

Ответ 2

Насколько я могу судить, это кажется невозможным, что печально. Для этого стоит использовать другие IDE, которые я использовал (IntelliJ IDEA, Oracle JDeveloper).

Например, IntelliJ IDEA имеет опцию на контрольных точках исключения для регистрации выражения на консоли при ударе точки прерывания исключения. В этом выражении "this" - это исключение, поэтому вы можете просто зарегистрировать "this", и вы получите что-то вроде:

Exception 'java.lang.IllegalStateException' occurred in thread 'main' at Silly.doThing(Silly.java:18)
java.lang.IllegalStateException: dead jim

Кажется, что поддержка этого будет хорошим улучшением для JDT... Я не мог найти ничего похожего в своей базе данных ошибок: https://bugs.eclipse.org/bugs/buglist.cgi?quicksearch=exception+breakpoint

Ответ 3

В представлении отладки щелкните поток, создающий исключение.

Вот изображение

Ответ 4

Вы можете увидеть Тип исключения в перспективе отладки на вкладке точек останова. Я прикрепил скриншот для вашей справки. Там у меня было NullPointerException, которое было показано на вкладке точек останова. enter image description here