Earlier quoted context omitted.
> But importance of the failure is determined completely by the program, not the library. Exactly. I think this is the real crux about what's wrong with checked exceptions. It puts the responsibility to decide what exceptions are important on the library, where it doesn't belong. Only the user of the library knows that.
Isn't it exactly the opposite? Checked exceptions are for libraries to declare "exceptions" they can't handle themselves. You, the user of the library, have to deal with them (or declare them checked yourself¹). I'm not a friend of checked exceptions myself, but I still think it's the opposite. ¹ which leads to the real issue with checked exceptions: they propagate through dependencies, if one nested dependency adds…
It would be another matter if they were designed such that you could fix an issue and continue the call on the happy branch, but I suspect the cases where something like that would be applicable are very few.