首先我要解释一下这个场景。我们有一个 Visual C++ 应用程序,其中包含一些 C# 项目和一些包装项目(托管 C++)以获得互操作性。
我们需要在 Visual C++ 端了解 C# 端的异常。我们知道这可以在我们的包装项目中捕获异常并将它们作为 C++ 异常重新抛出,我们已经尝试过这个选项并且它有效。我们还研究了其他选项,例如直接在 C++ 中捕获异步异常(c# 异常),但由于缺少有关捕获的异常的信息,我们放弃了最后一个选项。
Wrapper 项目已经编写好了,并且足够大,足以让我们考虑一个不意味着插入 try/catch 语句的解决方案。我们想为 C# 异常设置一个全局异常处理程序,其工作方式与 Visual C++ 全局处理程序一样。我们探索 AppDomain.UnhandledException 事件,但由于一些互操作问题,它不适合我们,而且无论如何,它会破坏执行流程,因此我们放弃该选项。
我们想要(这可能是不可能的)是设置一个 C# 全局异常处理程序,允许我们进行转换并将异常抛出到 Visual C++。
有任何想法吗?
先感谢您。