The scope of scope(exit)

Hasan Aljudy hasan.aljudy at gmail.com
Thu Mar 9 22:34:09 PST 2006


Walter Bright wrote:
> "Derek Parnell" <derek at psych.ward> wrote in message 
> news:1amv63k5pimu6.q5fyzezd5ew5.dlg at 40tude.net...
> 
>>The following code did not work as I expected it to.
> 
> 
> Think of it like:
> 
> int Foo(int x)
> {
>    int y;
>    y = x;
>    try
>    {
>         return y;
>     }
>     finally
>     {
>           if (x < 5) y += 9;
>      }
> }
> 
> which should make it clear. The reason it works this way is because the 
> return expression can be arbitrarilly complicated, and can throw exceptions. 
> So the exit code must be executed *after* the return value is computes. 
> 
> 

What happens when an exception is thrown inside the scope(exit) block?



More information about the Digitalmars-d-learn mailing list