On Aug 18, 11:03 am, Casper Bang <casper.b...@gmail.com> wrote:
> On 18 Aug., 16:51, Alexey Zinger <inline_f...@yahoo.com> wrote:
>
> > Maybe what this discussion needs is some real-world anecdotes of checked vs 
> > unchecked exceptions in production environments and how they helped or not 
> > to save the day.
>
> I would think it's a fairly real-world anecdote how no other language
> following Java introduced checked exceptions. Also you will have a
> much easier job coming up with language guro's against them than for
> them I think.

I'm not convinced of that.  So far, most of the complaints come from
people talking about the imposition checked exceptions create on the
coder.  There's grumbling of misuse and hiding of exceptions by
improper logging or catching and ignoring, but not much in the way of
real-world scenarios.  Not saying those statements aren't grounded in
reality, but let's throw out some concrete situations to dissect and
see how they could have been helped.

I'm not a fan of how checked exceptions are used in specific API, JSE
included, but I'm not against the concept as a whole.  Lately, I've
been working almost exclusively on web projects, many of them using
GWT.  Some of those projects were started by my predecessor and, not
to put the guy down, but there's some horrendous exception handling
there.  Lots of catch(Exception), inconsistent and often broken
logging, and all sorts of nasties like that.  Some of the scenarios
that were very difficult to debug (and still are in some parts of the
systems) are the ones, where there's use of a 3rd party Excel
authoring library (jxl as I recall).  Occasionally, the code comes
across a situation that breaks certain assumptions (unexpected
formatting, or the like) and those almost inevitably get buried in
ignored exception catches.  I never get proper time to go through it
(not that I'm that excited to do it) and clean it up, and so time and
again we bump into some new extravagant way the system breaks.

Now, one would read this and say, "Aha! -- if only there were no
checked exceptions, your predecessor would have written his sloppy
code in a way that would allow those to propagate to the top layer
(servlet container) and you would have seen it in some log and
probably on some screen."  Indeed, some of those exceptions are of
checked variety.  However, the code was written in a manner that
didn't stand a chance.  He simply assumed there would be no erroneous
situation and dealt wrote EVERYTHING (file IO, DB, parsing/formatting,
etc.) under a single try block and figured he'd just log whatever was
caught in one catch (reuse, right?).  And in fact, there ARE plenty of
ways to handle these situations based on whatever kind of exception
might arise.  For instance, multiple formats might be tried on a
single value before giving up, whereas a general Excel file read
exception is probably unrecoverable.

And then there's the unintended catching of RuntimeException that's
sprinkled around there that also just lumps lots of different
situations into one try/catch.  This one can't be fixed by killing off
checked exceptions, obviously.

Overall, much of the problems could have been avoided by a better
internal API design, that would separate different layers of
functionality into finer granularity and would make it clear to the
developer how to handle each and every exceptional situation
differently, while still cleaning up resources when possible.  So I
don't think simply eliminating checked exceptions would have been the
answer.  I think both checked and unchecked have their place.
Remember, that just because Java is the only language with checked
exceptions, doesn't mean that it's a dead end.  I do think that real
world implementations have scared some people off the idea.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "The 
Java Posse" group.
To post to this group, send email to javaposse@googlegroups.com
To unsubscribe from this group, send email to 
javaposse+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/javaposse?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to