Я чувствую, что пропускаю что-то очень простое здесь. Мне настраивали Eclipse для повреждения на всех исключениях. Так, скажем, то, что это повреждается на AssertationFailedException. Окно отладки покажет, что приостановленный поток и имеет следующие данные:
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
Однако текст, как который я ищу, такие: "Метод считывания, названный вне области заметного org.eclipse.core.databinding.observable.set.WritableSet@4b7361e2", не доступен, пока я не ступаю посредством исключения (таким образом распространяющий все это путь стек), где это производит тип исключения, текст (который является частью, которую я хочу), и отслеживание стека.
Как я могу исследовать "AssertationFailedException" (или какое-либо другое исключение) для получения сообщения, с которым было создано исключение? Конечно, я нахожусь в Проекции отладки.
Насколько я могу судить, это не представляется возможным, что отчасти печально. Как бы то ни было, другие 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