Sev*_*yev 5 .net c++ exception-handling c++-cli
混合模式 C++ 项目。本机代码正在调用托管代码。托管代码可能会引发异常。我可以使用向量异常处理程序在本机模式下捕获所述异常;我可以看到它的PEXCEPTION_POINTERS. 告诉代码 0xE0434F4D,这意味着它是一个 CLR 异常,在那里。
问题:有没有办法从随从数据中获取任何合理的信息(异常类、消息、堆栈跟踪等)?中有一个参数ExceptionInformation,它看起来像一个指向某物的指针......
不,那已经太晚了。您得到的只是异常代码。如果原始托管异常是由处理器故障引起的,您可能会在 ExceptionInformation 中得到一些信息。例如 NullReference 或 AccessViolation。这不会有任何帮助,因为您不再知道原始的 SEH 异常。使用COM给你一个更好的鼠标陷阱,CLR实现了IErrorInfo。但您尝试运行的托管代码可能不是 [ComVisible]。通过捕获异常的托管存根调用代码可能是一个更好的角度。