On Saturday, 14 August 2021 at 11:41:36 UTC, Tejas wrote:
What is the drawback of the following "simple" ```@nogc``` exception creation technique?

```d
import std;
void main()@nogc
{
    try{
        __gshared a = new Exception("help");
        scope b = a;
        throw b;
    }
    catch(Exception e){
        printf("caught");
    }
}
```

I mean, there has to be a gotcha, some weird multi-threading case where this catastrophically breaks and is therefore not recommended, right? Otherwise, why can't we just use this instead of fretting with ```DIP 1008```? I even tried accessing the actual object in the code below, it didn't crash the program :D

```d
import std;
void main()@nogc
{
    try{
        __gshared a = new Exception("help");
        scope b = a;
        throw b;
    }
    catch(Exception e){
        printf("caught\n");
        printf(cast(char*)e.msg);//new code
    }
}
```

Reply via email to