and the reason was nailed - I've seen way too much code written that simply swallows and ignores exceptions. This has the lovely effect of causing an error to happen much later than I expect and backtracking to the site of the error is virtually impossible. I'd rather that the developer were oblivious to the possibility of the exception and it propagate to a top level handler where I can find it than be swallowed.
More annoyingly - in the streams classes many abstract methods are declared to throw IOExceptions - which can make sense with an unreliable stream like a socket but makes absolutely no sense for a stream sitting atop a string - which will only fail if memory is exhausted. But I still have to have a handler for an IOException because the base class says the method could throw one even though I know bloody well that the actual class never will (and if it does we've got much bigger problems than a simple connection failure).
Checked exceptions are a major failure.