Proposal 2: Exceptions and @nogc

Lurker via Digitalmars-d digitalmars-d at puremagic.com
Mon Apr 10 13:52:21 PDT 2017


Everything looks good except this one line:

On Sunday, 9 April 2017 at 03:26:14 UTC, Walter Bright wrote:
>     throw new E(string);
>

I don't like it for 2 reasons:

a) E e = new E(string); throw e;

    Should be *exactly* the same as

    throw new E(string).

    I think it's obvious why.


b) Using 'new' in @nogc code feels plain wrong.


I think a library method of explicitly creating a ref-counted 
throwable would be better. One can then do

E e = refCountedThrowable!(E)(string);
throw e;

or, interchangeably,

throw refCountedThrowable!(E)(string);

and

throw new E(string);

would be illegal because new cannot be called from within a @nogc 
method.

(haven't ever used @nogc so I'm probably wrong)


More information about the Digitalmars-d mailing list