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