Exception/Error division in D

deadalnix deadalnix at gmail.com
Wed May 30 01:33:12 PDT 2012


Le 24/05/2012 21:33, Sean Kelly a écrit :
> On May 24, 2012, at 11:39 AM, Steven Schveighoffer wrote:
>
>> On Thu, 24 May 2012 06:27:12 -0400, Denis Shelomovskij<verylonglogin.reg at gmail.com>  wrote:
>>
>>> Let's talk about an abstract situation without caring about breaking existing code, current docs, implementation etc.
>>>
>>> Definitions:
>>> * an Exception is something that tigers scope guards and executes catch/finally blocks if thrown;
>>> * an Error is something that doesn't do it.
>>
>> I'll give you a different definition:
>>
>> * an Exception is something that can be handled far away from the context of the error, because the system can safely unwind the stack.
>> * an Error must be handled at the point the error occurred, or the program state is by definition invalid.
>
> This is a good point.  OutOfMemory conditions aside, the only time I'd want to recover from an Error condition was at the point the event occurred, not somewhere up the stack.
>

Often, the point of Exception isn't to recover, but to fail as cleanly 
as possible. To do so, Error must trigger finally blocks and scope 
statement.

They probably shouldn't be catchable in @safe code because of the 
possible invalid state of the program.

But still, often recovering isn't the point when it come to problem as 
bad as Errors.


More information about the Digitalmars-d mailing list