On 02/27/2014 05:24 AM, Remo wrote:

> Unfortunately I can not find a way to replace exception handler in D2.
> Is there a way to do this?

I think you mean the unhandled exception handler. Otherwise, try+catch is the way to provide a handler. ;) I think that would not be the solution as it would kick in when the application (druntime?) was going down; hence it would be too late anyway.

> The problem is that I load a Dll coded in D from Application coded in C++.
> If this Dll throw and exception then there is no way to handle it from
> the Application.

One way is to wrap every API function in a try+catch block on the dll side and return an error code and message. Not very pretty. :-/

Further, there may be a thin C++ layer that converts the error code and message to a C++ exception so that the C++ code need not deal with error codes. (I would definitely do this.)

> Application will crash without any way to figure out where the D
> exception was thrown.

One solution for that is to log a stack trace at the point of exception construction. We used libunwind in a C++ project but I haven't done anything similar in D.

Ali

Reply via email to