Точка останова при исключении в 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.
Ответы
Ответ 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]()