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
}
}
```