should postconditions be evaluated even if Exception is thrown?
Andrei Alexandrescu
SeeWebsiteForEmail at erdani.org
Fri Dec 4 08:28:26 PST 2009
Michal Minich wrote:
> Hello Andrei,
>
>> The way I was thinking of it is:
>>
>> int f()
>> out(result) { }
>> out(Exception e) { }
>> body { }
>> So you have a chance to assert what the world looks like in case you
>> plan on returning a result, and what the world looks like if an
>> exception is emerging from the function.
>>
>> So checked exceptions - this is not.
>>
>> Andrei
>>
>
> if the function which throws exception is pure, then there is no world
> invariant to hold on after function exits (only return value is to be
> checked on success). Is there reason to have out(Exception ex) {}
> postcondition for pure function, or it should be compile time error to
> specify one?
Good point. Probably a pure function has no place to define an
out(Exception) guarantee.
> Similarly, when function is nothrow or when is not marked pure but does
> not make any side effect either.
Such functions may choose to simply omit the out(Exception) clause.
Andrei
More information about the Digitalmars-d
mailing list