The Right Approach to Exceptions
Jonathan M Davis
jmdavisProg at gmx.com
Sat Feb 18 17:19:22 PST 2012
On Saturday, February 18, 2012 22:54:37 Jose Armando Garcia wrote:
> You basically agree that we need error codes inside the exception to
> handle database errors correctly. What about POSIX error codes?
> Basically in some cases you are solving the problem using inheritance
> in other cases you are solving the problem by switching on a variable.
There is a world of difference between having a specific exception type have an
error code from an external source (e.g. a database or POSIX) and making _all_
exceptions function via error codes.
And personally, I'd argue that in many cases, the correct thing to do would be
to have a base class exception type which has the error code in it (e.g.
FileException) and then have derived exceptions where the one you use depends
on what the error code actually was. Then additional information pertaining to
that specific error code could be put in the derived exception, and you can
catch the exceptions by type rather than having to resort to switching on the
error type in the exception.
That way, you can actually take advantage of the exception hierarchy for
controlling how you handle the exception, and you have additional information
pertaining to what went wrong. And if you want access to the original error
code, you have it. You can even just catch the base exception type and use a
switch if you want to. But you don't have to.
- Jonathan M Davis
More information about the Digitalmars-d