views:

43

answers:

2

I feel like I'm missing something very simple here. I have Eclipse set up to break on all exceptions. So, let's say that it breaks on an AssertationFailedException. The Debug window will show that thread suspended and has the following data:

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

However, the text that I'm looking for, such as: "Getter called outside realm of observable org.eclipse.core.databinding.observable.set.WritableSet@4b7361e2", is not available until I step through the exception (thus propagating it all the way up the stack) where it outputs the type of the exception, the text (which is the part that I want) and the stack trace.

How can I examine the "AssertationFailedException" (or any other exception) in order to get the message with which the exception was constructed? Of course I'm in the Debug perspective.

A: 

As far as I can tell, it doesn't appear to be possible, which is kind of sad. For what it's worth, other IDEs I've used (IntelliJ IDEA, Oracle JDeveloper) seem to do a much better job at this.

For example, IntelliJ IDEA has an option on exception breakpoints to log an expression to the console when an exception breakpoint is hit. In that expression, "this" is the thrown exception, so you can just log "this", and you get something like:

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

It seems like supporting this would be a nice enhancement to the JDT... I couldn't find anything that looked related in their bug database: https://bugs.eclipse.org/bugs/buglist.cgi?quicksearch=exception+breakpoint

Brian Duff
I can't believe this feature doesn't exist! I assumed that it did; thanks for checking the bug/enhancement database.
bowenl2
+1  A: 

There is an option in the Eclipse Preferences that allows inspecting of the thrown exception:

Check Java -> Debug -> Open popup when suspended on exception

With this option there will be a popup allowing inspection of the exception.

Strange that this option is not checked by default as it is very useful !

Michel