C#COMponent引发的异常消息是否通过interop传递给C?
发布时间:2020-12-16 06:50:31 所属栏目:百科 来源:网络整理
导读:如果我在C#类中实现一个COM接口,它将从C模块调用,那么在发生故障的情况下,C#代码应抛出异常;这将由interop层编组为HRESULT故障代码. 但是,传递给Exception构造函数的任何消息文本(或其他信息)是否也可用于调用C代码?如果是这样,如何获得,即哪种API方法? 例
如果我在C#类中实现一个COM接口,它将从C模块调用,那么在发生故障的情况下,C#代码应抛出异常;这将由interop层编组为HRESULT故障代码.
但是,传递给Exception构造函数的任何消息文本(或其他信息)是否也可用于调用C代码?如果是这样,如何获得,即哪种API方法? 例如如果在我的C#代码中我抛出新的ArgumentException(“电子邮件地址无效”)我将除了我的COM HRESULT为E_INVALIDARG但是我的自定义文本将被编组或者我只能查找E_INVALIDARG的文本描述吗? 解决方法
鲜为人知的是,
IErrorInfo 对象(由
GetErrorInfo 返回)也实现了
_Exception COM接口,该接口将
System.Exception 类的公共成员公开给非托管代码,包括
StackTrace 等.
要从C访问_Exception,您需要导入正确版本的mscorlib.tlb,例如: #import "C:WindowsMicrosoft.NETFrameworkv4.0.30319mscorlib.tlb" raw_interfaces_only (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |