DIP33: A standard exception hierarchy
Lars T. Kyllingstad
public at kyllingen.net
Mon Apr 1 12:46:39 PDT 2013
On Monday, 1 April 2013 at 18:40:48 UTC, Dmitry Olshansky wrote:
> 01-Apr-2013 15:08, Lars T. Kyllingstad пишет:
>> It's time to clean up this mess.
>>
>> http://wiki.dlang.org/DIP33
>
> Overall neat.
>
> 1. Where to define this hierarchy.
> Captain the obvious says std.exception, but can we fit all of
> them there?
Some of them have to be in core.exception. Personally, I think
the rest of the base hierarchy should be in std.exception. In
fact, I think the "standard hierarchy" should be defined as
"what's in core.exception and std.exception".
If we identify cases where modules absolutely *must* extend these
classes for extremely specific purposes, this can be done within
the module.
> 2. ProcessException is IMHO a system exception. Plus some
> RTOses systems may not have processes in the usaul POSIX sense.
> It needs some thought.
Well, I *don't* think ProcessException is a SystemException. :)
And if druntime/Phobos is to be used on OSes that don't have
processes, there are other adaptations that have to be made that
are probably more fundamental.
> 3. I assume that NetworkingException should rather be
> NetworkException. Not only that but I truly hope it deals with
> network-only events (like resolver errors, host unreachable
> etc.) not with normal I/O Exceptions happening on sockets. It
> could get tricky to separate the two on some OSes.
I have changed the name. I have the same view of the
NetworkException/IOException separation as you.
> 4. A quiz as an extension of 3 - where a e.g. serial port
> exceptions would fit in this hierarchy? Including Parity
> errors, data overrun etc.
> Let's think a bit ahead and pick names wisely.
> Maybe turn NetworkException --> Comm(unication)Exception, I
> dunno.
Good question, I dunno either. :) I agree we should think about
it.
> 5. Continuing the above - a failed call (in-system) of a
> general purpose IPC library would be a ... SystemException? A
> network exception? Should it matter to the user?
Note that I am only saying that the standard exceptions should
cover *most* error categories. 100% is not feasible, and we
shouldn't even try. This may be one of the exceptions (haha) to
the rule.
> 6. I like ParseException. Wondering if could be generalized a
> bit - in a sense it's a "bad format"/"malformed" exception. For
> instance corrupt DB file reporting ParseException (= bad
> format) is rather wacky.
I agree, and welcome all suggestions for better names.
> 7. DocParseExcpetion ---> TextParseException there is a notion
> of a binary "document" (e.g. BSON databases like Mongo DB).
Agreed.
> 8. For IOExcpetion we might consider adding an indication on
> which file handle the problem happened and/or if it's
> closed/invalid/"mostly fine" that.
Which form do you suggest that such an indicator should take?
Bear in mind that it should be general enough to cover all, or at
least most, kinds of I/O exceptions.
Lars
More information about the Digitalmars-d
mailing list