<p dir="ltr">On 12 Sep 2014 19:00, "via Digitalmars-d" <<a href="mailto:digitalmars-d@puremagic.com">digitalmars-d@puremagic.com</a>> wrote:<br>
><br>
> On Friday, 12 September 2014 at 16:37:43 UTC, H. S. Teoh via Digitalmars-d wrote:<br>
>><br>
>> On Fri, Sep 12, 2014 at 06:19:54PM +0200, Marco Leise via Digitalmars-d wrote:<br>
>>><br>
>>> Am Fri, 12 Sep 2014 15:55:37 +0000<br>
>>> schrieb "Sean Kelly" <<a href="mailto:sean@invisibleduck.org">sean@invisibleduck.org</a>>:<br>
>>><br>
>>> > On Friday, 12 September 2014 at 06:56:29 UTC, Jacob Carlborg > wrote:<br>
>>> > > On 64bit Objective-C can catch C++ exceptions. But I don't > > think you can do anything with the exception, i.e. it uses > > the following catch syntax:<br>
>>> > ><br>
>>> > > @catch(...) {}<br>
>>> > ><br>
>>> > > Would that be easier?<br>
>>> > > I think the trick is setting up the stack frame in such a > way that the C++ exception mechanism knows there's a catch > block available at all.  From there, we should be able to > use the standard interface-to-class method to call virtual > functions on the exception object, and hopefully the C++ > runtime will handle cleanup for us.<br>
>>><br>
>>> What exception object?<br>
>>><br>
>>> throw "bad things happened";<br>
>><br>
>> [...]<br>
>><br>
>><br>
>> Yeah, in C++, you can throw *anything*. Including ridiculous things like<br>
>> `throw NULL;` or `throw 3.14159;`. There's no method for that! What we<br>
>> might end up doing, might be to wrap the C++ exception in a D exception<br>
>> that contains a pointer to the C++ type along with whatever type info we<br>
>> can glean from the C++ runtime. We probably won't be able to do much<br>
>> more than that.<br>
><br>
><br>
> How about<br>
><br>
>     try {<br>
>         my_cpp_func();<br>
>     } catch(CppException!(const(char)*) e) {<br>
>         writeln(e.payload.fromStringz());<br>
>     }<br>
><br>
> ?<br>
></p>
<p dir="ltr">I'd vote no.</p>