DIP33: A standard exception hierarchy
Lars T. Kyllingstad
public at kyllingen.net
Mon Apr 1 04:33:56 PDT 2013
On Monday, 1 April 2013 at 11:23:50 UTC, monarch_dodra wrote:
> On Monday, 1 April 2013 at 11:08:16 UTC, Lars T. Kyllingstad
> wrote:
>> It's time to clean up this mess.
>>
>> http://wiki.dlang.org/DIP33
>
> A quick comment about your "Error" section. You say:
>
> "In general, Errors should not be caught, primarily because
> they indicate that the program logic is compromised, and that
> the program may therefore be in an invalid state from which
> there is no recovery".
>
> It is actually much worst than that: errors bypass the entire
> exception handling mechanism, blasting through code that would
> handle destructors, and even flying through functions that are
> nothrow. They don't just indicate a "potential" invalid state,
> they actually *put* the program in an invalid state, from which
> there is no recovery.
>
> That is the main mechanical difference between an "error" and
> an "exception", it is not just a philosophical "logic vs
> runtime".
I had forgotten about that. Personally, I think that is crazy.
Errors ought to propagate just like Exceptions, they just
shouldn't be a part of your "normal" error-handling mechanism.
> --------
>
> Under this situation, I'm wondering how the "OutOfMemory" is
> dealt with (you don't explain). The only logical explanation I
> can see is:
> - It is not an exception and is not caught by
> "catch(Exception)".
> - But it is not an error either, so does not corrupt the
> program state.
> => Goal: It is hard to catch, but you *can* recover from it.
> Is this correct? Is this what we are going for?
That was the idea, yes.
More information about the Digitalmars-d
mailing list