I am not necessarily a fan of checked exceptions either, but the mess that exists now is much worse.
In an ideal world people would know what sorts of exceptions are likely to arise from what they call. Checked exceptions make the developer quite clear of what happens at compile time, but they can be a pain for trivial exceptions.
The problem that exists now in my experience is that junior people are using functions without regard for what type of exceptions they may throw, and nothing shows up till run time. I've seen so many "unchecked exception in..." error messages it is disgusting, and every single one could of been caught by the compiler with checked exceptions.
I think the best probably lies somewhere in between the Java - check everything and the .NET - check nothing until the program crashes philosophies. But .NET does not have the functionality to force checking. It is not a "feature" as they claim (Yes I read their little paper on why they aren't there and no I don't think it holds water). In Java, when creating new code they are optional, unfortunately they are over used in many libraries, but atleast the option is there if I want to use it.