我有一些本机 C++ 类库,我用 C++ .NET 封装了它们,然后我从 C# 调用(三层!)。
我可以从 C++ .NET 中抛出异常并愉快地在 C# 中捕获它们。问题是我可以捕获我的本地 C++ 异常的唯一方法是捕获 System.Exception,这很好,但是在从 std::exception 到 System.Exception 的转换中,我丢失了关于错误的绝大多数信息(对于例如错误消息!)。我可以在 C++ .NET 层中捕获本机异常并作为 .NET 异常重新抛出,但这是一种侵入式解决方案,需要我在每个 C++ .NET 方法调用周围放置 try-catch 块(以捕获本机异常并重新抛出) .
是否有其他解决方案可以做到这一点,或者我只是不得不把手弄脏......