Re: Exceptions no longer incur overhead?
<void.no.spam.com@gmail.com> wrote in message
news:1183153414.459848.115170@g4g2000hsf.googlegroups.com...
One of our classes has a method to look up an object. If the object
does not exist, it throws an exception to indicate that. I thought it
would be better to just return null, as exceptions incur overhead. I
talked to the senior java developer who wrote the class, and he said
that recent versions of Java have improved exceptions to the point
that they do not really incur any overhead. Is this true?
It's not really the right question. It's better to ask:
Is the object's nonexistence an exceptional condition?
If code calling the lookup method has to anticipate and deal with the fact
that the object doesn't exist, then null (or some other distinguihsed value)
should be returned. It makes no sense to force clients to write code like
Data value = null;
try
{
value = cache.lookup(key);
}
catch (NoSuchObjectException ex)
{
value = new Data();
cache.add(key, data);
}
On the other hand, if the object always should exist, and its nonexistence
is dealt with by error-handling code, it makes more sense to throw the
exception directly in the lookup method, rather than to force clients to
write code like:
Data a = cache.lookup(key1)
if (a == null)
{
log ("no such object " + key1);
return false;
}
Data b = cache.lookup(key2)
{
log ("no such object " + key2);
return false;
}
etc.
As is often true, performance isn't the only issue here.