[jdom-interest] NoSuch*Exceptions in JDOM

Jools Enticknap jools at jools.org
Fri Jun 16 11:20:20 PDT 2000


On Fri, 16 Jun 2000, bob wrote:

> > if NoSuchElementException is designed, simply to eliminate the need to
> > check for a null, then I would suggest that using a List is just as heavy
> > weight.
> 
> 	It typically for people doing long paths.
> 
> 	elem.getChild("foo").getChild("bar").getChild("baz);

Mmm, OK.

I however __really__ don't like this style.

Given then (albeit abtuse) code like this;

elem.getChild("foo").getChild("bar").getChild("baz").getChild( "bar");

And an exception was thrown due to one of the "bar" elements being
missing, I would not know which getChild() call caused the exception.

But this has been covered before.....


> 
> 	You can wrap that with a single try/catch for the
> 	entire chain.  Otherwise, you have to wrap each
> 	getChild() call with an "if (elem != null)".  Which
> 	turns into a lot of typing.

Or maybe you might do this.

Element target = null;
try {
	target = elem.getChild("foo");
	target = target.getChild("bar");
	target = target.getChild("baz");
}
catch( NullPointerException npe ) {
	// Print out the exception .....
}


> 
> 	Also, Exception handling in Java isn't heavy-weight.
> 	It's computationally similar to a normal return, with
> 	an 'isAnException' flag set.  Remember that Java isn't
> 	compiled C++ code.

To a degree, you are correct, however I think that the reference is a
little missplaced :-)

The original comment was based on the thought "I don't want to handle an
exceptional condition at this point as it makes my life hard" and so I
went on to show why in this situation is was a pain to have to place a
call to getChild in a try/catch block.

An in order to achieve this I would have to call
getChildren("foo").size(), which is more expensive than checking a null.

However, I'm still on the fence. Somebody push me :-)


--Jools





More information about the jdom-interest mailing list