Am Thu, 11 Sep 2014 17:35:25 -0700 schrieb Andrei Alexandrescu <seewebsiteforem...@erdani.org>:
> Hello, > > > We are racking our brains to figure out what to do about exceptions > thrown from C++ functions into D code that calls them. > > A few levels of Nirvana would go like this: > > 0. Undefined behavior - the only advantage to this is we're there > already with no work :o). > > 1. C++ exceptions may be caught only by C++ code on the call stack; D > code does the stack unwinding appropriately (dtors, scope statements) > but can't catch stuff. > > 2. D code can catch exceptions from C++ (e.g. via a CppException wrapper > class) and give some info on them, e.g. the what() string if any. > > Making any progress on this is likely to be hard work, so any idea that > structures and simplifies the design space would be welcome. > > > Andrei I would say aim for 1. I wouldn't expect any less or any more. Exception handling seems to have a platform wide standard on major OSs that D should follow (e.g. libunwind helps with this on GCC dominated systems), but dealing with C++'s "throw anything" seems overkill to me for the next milestone in C++ interop. After all there could be exceptions using multiple inheritance, templated objects or basic data types thrown from the C++ side. -- Marco