gpt4 book ai didi

.net - 在 C++/CLI 包装类中转换异常的最佳实践

转载 作者:行者123 更新时间:2023-12-04 23:11:30 26 4
gpt4 key购买 nike

我正在为抛出异常的现有 native 类编写 .NET 包装类。在 native C++ 异常和托管异常之间进行转换的最佳实践是什么?在一对一的基础上捕获并重新抛出(例如 std::invalid_argument -> System.System.ArgumentException)?是否已经在某处绘制了 map ?

最佳答案

我所知道的没有标准映射。我过去所做的是翻译我所知道的那些,以及 System.Runtime.InteropServices.SEHException 的 catch 块。所有未翻译的异常都将转换为该异常。只要您有抛出异常的代码的调试版本,您就应该得到一个很好的堆栈跟踪。然后你可以去查看异常并编写包装器。

但在最后一个项目中,我不得不这样做,我做了一些更简单的事情,我最终为 logic_error 和 runtime_error 编写了几个 System.Exception 派生类。然后我将捕获这两个基类并使用 typeid(err) 编写抛出的 .NET 消息。这样我就不会“丢失”从 C++ 抛出的内容,但不必映射除最重要的之外的所有内容。

关于.net - 在 C++/CLI 包装类中转换异常的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/117940/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com