scope + destructor with Exception parameter for RAII
Sean Kelly
sean at f4.ca
Thu Nov 30 10:10:10 PST 2006
Leandro Lucarella wrote:
> Sean Kelly escribió:
>>> I don't see why writing correct code is that complicated. And how do
>>> you address the problem of repeating error handling code and the lack
>>> of encapsulation of scope(success/failure)?
>>
>> The lack of encapsulation doesn't bother me much, though now I see
>> what you're getting at. I do think that having:
>>
>> auto scope t = new Transaction();
>> scope(failure) t.rollback();
>> // commits if not rolled back on scope exit, alternately use
>> scope(success) t.commit();
>>
>> actually aids readability a bit, at the expense of some extra code.
>
> So you are against all RAII done in the C++ way, I guess...
Not at all, I use it all the time :-) But I don't think the C++ method
works well for situations like the above. Andrei's original series of
articles on scope guards actually used transactions as their primary
example for when the C++ method falls apart, and I agree with his
reasoning. That said, part of his argument *was* because the C++ method
for detecting in-flight exceptions isn't very reliable. Providing a
fixed version in D would allow for both methods to be used--it's just a
matter of making the necessary changes. All of which could be done in
phobos/internal, by the way.
Sean
More information about the Digitalmars-d
mailing list