![]() |
1
4
据我所知,没有标准映射。我过去所做的是翻译我所知道的,以及System.Runtime.InteropServices.SEHException的catch块。所有未转换的异常都将转换为该异常。只要您有一个抛出异常的代码的调试版本,您就会得到一个很好的堆栈跟踪。然后,您可以查看异常并编写包装器。
|
![]() |
2
2
对我来说,一对一映射似乎是最明智的方法。由于特定于应用程序的异常,很难实现“通用”映射,尽管STL异常类有一些明显的映射。 此外,还存在非托管代码的SEH异常问题。根据您的情况,可能也需要抓住并包装它们。 |
![]() |
3
2
我认为这取决于包装的设计。如果管理器包装器的接口与非托管库的接口几乎相同,则将异常重新显示为1:1。如果要显著更改接口,则抛出最适合新接口的异常。无论哪种方式,确保包装器在操作无法完成时抛出异常,以符合.NET设计准则。 |
![]() |
4
1
Interop已经将本机异常转换为托管异常,包括SEH异常。然而,好的设计规定了这一点 全部的 |
![]() |
Adam · 获取对列表中元素的引用 6 年前 |
![]() |
NormX · 没有带字符串数组的存储类或类型说明符 6 年前 |
![]() |
areify · 如何避免此代码中的内存泄漏? 7 年前 |
![]() |
Nicola · C++CLI项目中非托管数据上的C#指针 7 年前 |
![]() |
Matthias Hoste · 是否可以进行C++/CLI注入? 7 年前 |