DIP33: A standard exception hierarchy - finally blocks not executed for Errors
Don
turnyourkidsintocash at nospam.com
Tue Apr 2 04:42:00 PDT 2013
On Monday, 1 April 2013 at 20:58:26 UTC, Walter Bright wrote:
> On 4/1/2013 4:08 AM, Lars T. Kyllingstad wrote:
>> It's time to clean up this mess.
>
>
> As for why finally blocks are not executed for Error
> exceptions, the idea is to minimize cases where the original
> error would now cause an abort during the unwinding process.
> Catching an Error is useful for things like:
>
> 1. throw the whole plugin away and restart it
> 2. produce a log of what happened before aborting
> 3. engage the backup before aborting
> 4. alert the operator that the system has failed and why before
> aborting
>
> Unwinding is not necessary for these, and can even get in the
> way by causing other failures and aborting the program by
> attempting cleanups when the code is in an invalid state.
I think that view is reasonable, but then I don't understand the
reason to have Error in the first place! Why not just call some
kind of abort() function, and provide the ability to hook into it?
BTW, I actually went to quite a lot of trouble to make stack
unwinding work correctly for Errors on Windows. It really wasn't
easy.
More information about the Digitalmars-d
mailing list