scope(exit) without exception handling?
Mehrdad
wfunction at hotmail.com
Tue May 15 22:46:02 PDT 2012
On Wednesday, 16 May 2012 at 05:39:08 UTC, Brad Roberts wrote:
> On 5/15/2012 10:06 PM, Jonathan M Davis wrote:
>> On Wednesday, May 16, 2012 05:54:04 Mehrdad wrote:
>>> I'm writing some (low-level) code with no exception handling
>>> available whatsoever... either the code runs, or it doesn't.
>>>
>>> Is there any way for me to use scope(exit) (or perhaps a
>>> destructor, like RAII) to mean, "Execute this block of code
>>> for
>>> me when the block is exited, will ya?", *without* introducing
>>> dependencies on exception handling?
>>
>> scope(exit) stuff;
>> otherStuff;
>>
>> is lowered to something like
>>
>> try
>> {
>> otherStuff;
>> }
>> finally
>> {
>> stuff;
>> }
>>
>> So, you can use scope(exit) if the above code is acceptable
>> for whatever you're doing. Otherwise, no, you can't.
>>
>> Destructors should work regardless of what you're doing with
>> exceptions though, so I would expect RAII to work.
>>
>> - Jonathan M Davis
>
> And if otherStuff is marked all nothrow, then the exception
> parts are pulled out. It's pretty much the entire point of
> having nothrow annotations.
Oooh, *that* I did not know. Very interesting, thanks for
pointing that out!
More information about the Digitalmars-d
mailing list