Merely by virtue of its ability to channel errors up the call stack, one can justify the need for an exception handling mechanism. But programmers litter their code with try-catch clauses just because they have to and also to cover their asses -- not because they want to. Then there's those people who suffix every method signature with
throws ExceptionThese guys need to be rounded up and publicly flogged. This is just unforgivable!
Most code I have reviewed doesn't have any impressive exception handling. Rather the focus is on protecting against that exception (like de-allocating memory, closing open connections etc. as the case may be). If your chief way out in case of an exception condition is to log a message or popup a dialog for the user, then it makes sense to have a centralized exception handler that acts as a bucket for all such critters.
Bill Venners and Bruce Eckel [two smart dudes] interviewed Anders Hejlsberg, the C# big honcho, about checked exceptions and the versionability and scalability issues that come with it. It is an interesting read. But here's a hilarious -- and smart -- critique of that interview by James Ross that made me fall out of my chair laughing. It was only my earphone cord, plugged to the laptop, that prevented my head hitting the floor.
This issue's being talked about a good deal of late. There's some great ideas thrown around. More soon.