The power of structured exception handling is that it allows every layer in our stack be notified of an error condition, do something about it, and pass it on if necessary.
For example, if you have a data access layer and a query fails, you may catch the exception and potentially retry there, only passing the exception up the stack after a few failures. Or, you may fail to connect, updates some internal status variables to represent that you’re in an invalid state, and then pass that exception up the stack.
There are other options one might use for propagating errors, but many languages use structure exception handling.
Which brings us to today’s anonymous submission, which is more of a representative comment than a representative line. This was in the public interface to the data access layer in a project:
// error handling for this class occurs in the functions that call them..
This comment is half true. It’s true in that the data access layer doesn’t do a single bit of exception handling. It’s false, in that the functions which call them also don’t do any exception handling, unless you count “letting the exception bubble to the top of the stack and cause the program to fail” as “exception handling”.
There wasn’t a single try/catch in the entire project.