我有一个用C#编写的COM对象。在某些情况下,如果COM对象遇到错误(例如throw new Exception("error message")
),它可能会抛出带有描述性消息的异常。
这个COM对象是从VB6代码和C++代码调用的。
从VB6代码中,我可以使用Err.Message
检索错误消息。
在C++中,我得到System.Exception文档中指定的HRESULT0x80131500。
在C++中有了这个HRESULT之后,如何获得异常(Exception.Message
)的错误消息,就像Err.Message
在VB6中返回的消息一样?
我搜索了网络,并找到了一些使用FormatMessage
和_com_error
的例子,但是这些都没有返回我想要的信息。
发布于 2014-01-20 17:28:26
已更新。
尝试QueryInterface
ISupportErrorInfo
接口的失败对象,然后使用接口的REFIID
调用InterfaceSupportsErrorInfo
方法,抛出异常。如果它返回S_OK
,那么只需要调用GetErrorInfo函数来获得IErrorInfo接口。然后使用GetDescription
方法。
https://stackoverflow.com/questions/21239794
复制相似问题