newbie problem with nothrow
Mike Parker via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Tue Nov 1 00:00:10 PDT 2016
On Monday, 31 October 2016 at 22:20:59 UTC, Kapps wrote:
>> Wrap a body of the function to try {} catch {} and it'll work.
>
> Assuming you're sure it'll never throw. To enforce this, use
> try { } catch { throw new Error("blah"); }. You can still throw
> errors, just not exceptions (as errors are not meant to be
> caught).
Not advisable in this case. This is for a function intended to be
used as a C callback. There's no guarantee any errors thrown will
propagate through the C side back into the D side. I wrote an
article about this on gamedev.net [1] a while back. The feedback
there is what led me to finally declare all of the callback types
in Derelict (like the GLFW key callback above) as nothrow. I've
since refined my approach, but, unless things have changes
significantly (and I don't believe they have) the general idea
still holds.
[1]
http://www.gamedev.net/page/resources/_/technical/general-programming/d-exceptions-and-c-callbacks-r3323
More information about the Digitalmars-d-learn
mailing list