Program logic bugs vs input/environmental errors (checked exceptions)
Regan Heath via Digitalmars-d
digitalmars-d at puremagic.com
Mon Oct 6 09:03:29 PDT 2014
On Mon, 06 Oct 2014 15:48:31 +0100, Jacob Carlborg <doob at me.com> wrote:
> On 06/10/14 15:45, Andrei Alexandrescu wrote:
>
>> Knowledge doesn't have to be by type; just place data inside the
>> exception. About the only place where multiple "catch" statements are
>> used to make fine distinctions between exception types is in sample code
>> showing how to use multiple "catch" statements :o). This whole notion
>> that different exceptions need different types is as far as I can tell a
>> red herring.
>
> What do you suggest, error codes? I consider that an ugly hack.
Why?
It gives us the benefits of error code return values:
- ability to easily/cheaply check for/compare them using "switch" on code
value (vs comparing/casting types)
- ability to pass through OS level codes directly
Without any of the penalties:
- checking for them after every call.
- losing the return value "slot" or having to engineer multiple return
values in the language.
- having to mix error codes in with valid return values (for int()
functions).
We also get:
- no type proliferation.
- no arguments about what exception types are needed, or the hierarchy to
put them in.
Seems like a win to me.
Of course.. it would be nicer still if there was a list of OS/platform
agnostic error codes which were used throughout phobos and could be
re-used by client code. And.. (for example) it would be nice if there was
a FileNotFound(string path) function which returned an Exception using the
correct code allowing:
throw FileNotFound(path);
and so on.
I do not know a lot about how exceptions are thrown and caught at the
compiler/compiled code level, but perhaps there is even a performance
benefit to be had if you know that only 2 possible types (Exception and
Error) can/will be thrown..
R
--
Using Opera's revolutionary email client: http://www.opera.com/mail/
More information about the Digitalmars-d
mailing list