Article: D Exceptions and C Callbacks
Mike Parker
aldacron at gmail.com
Tue Aug 6 18:33:28 PDT 2013
On Tuesday, 6 August 2013 at 17:54:34 UTC, QAston wrote:
> There's one thing though. You say than relying on coder's
> discipline is error prone and I totally agree with that. But
> your sollution requires coder to remember to wrap those
> callbacks in try-catches.
Programming always requires a certain amount of discipline.
Remembering to release resources when they are no longer needed,
properly handling errors, being aware of the constraints of a
particular API call. It's all differing degrees. I don't think
it's too much trouble to wrap D function calls in try...catch
blocks inside a C callback. It's a one-off thing for each
callback and something that will likely be on the programmer's
mind when a decision is made to implement such a solution.
Properly handling arrays in C is an ongoing, full-time thing
where it's easy to overlook a mistake now and again. So Id on't
really see it as a problem.
> Maybe modifying glfwSetWindowCloseCallback and similar
> functions to only accept nothrow functions is a good idea?
I'm not sure what you mean. That's a C function, which means it
doesn't have any concept of D's nothrow. And, actually, the
callbacks should be declared as nothrow anyway. Like:
extern( C ) nothrow void function( GLFWwindow* )
glfwWindowCloseCallback;
Any exceptions thrown by functions called inside the callback
must be handled, regardless, if you don't want to lose them.
More information about the Digitalmars-d-announce
mailing list