Eclipse中异常的断点 - 如何检查异常对象?

时间:2010-08-10 21:51:27

标签: java eclipse exception debugging

我觉得我在这里错过了一些非常简单的事情。我设置Eclipse以打破所有异常。所以,假设它在AssertationFailedException上中断。 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在可观察的org.eclipse.core.databinding.observable.set.WritableSet@4b7361e2外部调用”,直到我逐步执行异常(从而将其一直向上传播到堆栈),才输出类型例外,文本(我想要的部分)和堆栈跟踪。

如何检查“AssertationFailedException”(或任何其他异常)以获取构造异常的消息?当然我在Debug透视图中。

4 个答案:

答案 0 :(得分:30)

Eclipse Preferences中有一个选项,允许检查抛出的异常:

检查Java -> Debug -> Open popup when suspended on exception

使用此选项会有一个弹出窗口,允许检查异常。

奇怪,默认情况下不会选中此选项,因为它非常有用!

答案 1 :(得分:3)

在调试视图中,单击产生异常的线程。

Here is the image

答案 2 :(得分:1)

据我所知,这似乎不太可能,这有点难过。对于它的价值,我使用的其他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的一个很好的增强...我找不到任何与他们的bug数据库相关的内容:https://bugs.eclipse.org/bugs/buglist.cgi?quicksearch=exception+breakpoint

答案 3 :(得分:0)

您可以在breakpoints选项卡的debug透视图中看到异常的类型。 我附上了截图供您参考。在那里我有NullPointerException,它已在断点选项卡中显示。 enter image description here