In my experience, why an exception was thrown is rarely as important as that it was thrown.
That's absolutely right. However, if a particular exception is caught from a function you didn't anticipated, you may very well end with an incoherent state. Well, There's a nice article on this matter here : Exceptions and another one there which is even better :Cleaner, more elegant, and harder to recognize
. I understand very well the way exceptions match the "laziness and hubris" state-of-mind, however I feel more like Joel on this ;)