Program logic bugs vs input/environmental errors
Walter Bright via Digitalmars-d
digitalmars-d at puremagic.com
Sun Sep 28 10:32:14 PDT 2014
On 9/28/2014 9:16 AM, Sean Kelly wrote:
> On Sunday, 28 September 2014 at 00:40:26 UTC, Walter Bright wrote:
>>
>> Whoa, Camel! You're again thinking of Exceptions as a debugging tool.
>
> They can be.
Of course they can be. But it's inappropriate to use them that way, and we
should not be eschewing such in the library.
> What if an API you're using throws an exception you didn't expect,
> and therefore don't handle?
Then the app user sees the error message. This is one of the cool things about D
- I can write small apps with NO error handling logic in it, and I still get
appropriate and friendly messages when things go wrong like missing files.
That is, until recently, when I get a bunch of debug stack traces and internal
file/line messages, which are of no use at all to an app user and look awful.
> This might be considered a logic error if the
> exception is recoverable and you don't intend the program to abort from that
> operation.
Adding file/line to all exceptions implies that they are all bugs, and
encourages them to be thought of as bugs and debugging tools, when they are NOT.
Exceptions are for:
1. enabling recovery from input/environmental errors
2. reporting input/environmental errors to the app user
3. making input/environmental errors not ignorable by default
They are not for detecting logic errors. Assert is designed for that.
More information about the Digitalmars-d
mailing list