2010-08-10 52 views
18

我觉得我在这里错过了很简单的东西。我设置了Eclipse来打破所有异常。所以,假设它在AssertationFailedException中断了。在调试窗口将显示该线程暂停,有以下数据:在Eclipse中的异常断点 - 如何检查异常对象?

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”(或任何其他异常)以获取构造异常的消息?当然,我在调试视角。

回答

27

有处于可检查抛出的异常的Eclipse的首选项:

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

使用这个选项将是一个允许检查异常的弹出窗口。

奇怪的是,这个选项默认没有选中,因为它非常有用!

+1

太棒了!可能需要重新启动Eclipse,因为它是我的情况。另外Ctrl + Shift + I在这个窗口中没有按照承诺的方式工作。 – alehro 2011-07-10 08:59:29

+0

它可能没有被默认选中,因为有时你可能会收到很多例外情况。然而,+1这个答案,我会+5,如果我可以。花了我很多时间来找到这个。 – eis 2014-09-16 12:50:17

1

据我所知,它似乎不可能,这是一种伤心。对于它的价值,我用过的其他IDE(IntelliJ IDEA,Oracle JDeveloper)似乎在这方面做得更好。

例如,IntelliJ IDEA在异常断点上有一个选项,用于在命中异常断点时将表达式记录到控制台。在那表情,“这”是抛出的异常,所以你可以登录“这个”,你会得到这样的:

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

+0

我不敢相信这个功能不存在!我认为它确实如此;感谢您检查错误/增强数据库。 – Hut8 2010-08-11 02:51:51

+1

一个调试器不会告诉你什么异常,你看起来并不像一个调试器。 – speedplane 2011-07-31 13:26:08

0

您可以在断点选项卡的调试透视图中看到异常的类型。 我附上了截图供您参考。在那里,我有NullPointerException,这是在断点标签中显示。 ​​

+2

OP不在寻找异常的类型,而是寻找其消息 – eis 2014-09-16 12:45:35

1

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

Here is the image