DIP60: @nogc attribute
Peter Alexander via Digitalmars-d
digitalmars-d at puremagic.com
Wed Apr 16 13:10:36 PDT 2014
On Wednesday, 16 April 2014 at 19:53:01 UTC, bearophile wrote:
> Peter Alexander:
>
>> * Does @nogc => nothrow? If I'm not mistaken, throw must
>> through a GC-allocated Throwable.
>>
>> * If the above is true, does that mean exceptions cannot be
>> used at all in @nogc code?
>
> This should work:
>
> void foo() @nogc nothrow {
> static const err = new Error("error");
> throw err;
> }
>
> Bye,
> bearophile
(I assume that nothrow isn't meant to be there?)
What if the exception needs information about the error?
You could do something like this:
void foo() @nogc
{
static err = new Error();
if (badthing)
{
err.setError("badthing happened");
throw err;
}
}
However, that raises a second question: since err is allocated
when a new thread is created, does that mean @nogc functions
cannot create threads in the presence of such static
initialisation?
More information about the Digitalmars-d
mailing list