我有基于COM的C ++项目,在其中访问C#程序集。我想编写代码来处理由C#assembly抛出的com项目中的异常。
我尝试放置try和catch块,但是没有抛出异常,而是HRESULT值小于零。我需要显示C#API抛出的确切消息字符串。
请提供相关指南。
答案 0 :(得分:1)
您有两种可用信息来源。首先,返回的HRESULT不是任意的,每个托管异常都有distinctive HRESULT,可以帮助您识别抛出的异常对象的类型。
接下来,CLR实现IErrorInfo interface。您可以在用于调用托管方法的接口指针上获取QI以获取IErrorInfo接口指针。 IErrorInfo :: GetDescription()返回Exception.Message属性值。
它结束的地方,无法获得圣堆痕迹。