In the world of programming, there are a lot of "answers" that feel like they lack any substantial value-add. "It depends," for example, is a response that typically doesn't clarify anything. Another response that sticks in my craw is that "exceptions are for exceptional circumstances." This is a response often given to the question, "When should I throw an exception?" But it doesn't mean anything; it does nothing more than answer the question with another, unstated question, "What is exceptional?"
This morning, I came across an old blog post by Scott Hanselman that I believe provides real, actual, value-add thoughts about exception management. The one that adds the most clarity for me is:
If your functions are named well, using verbs (actions) and nouns (stuff to take action on) then throw an exception if your method can't do what it says it can... For example, SaveBook(). If it can't save the book - it can't do what it promised - then throw an exception. That might be for a number of reasons.
This is probably the most concrete advice I've ever seen given on the topic.