我正在使用c#将要使用的COM接口,但是我想知道如何检查c#end上的异常处理错误。目前我只是为大多数方法返回一个HRESTULT或bool,然后执行Marshal.ThrowExceptionForHR但是在某些方法中出现了一些问题并且返回一个E_FAIL并没有削减它。
如何返回更多信息,我该怎么办?我可以自己做一个人吗?
答案 0 :(得分:1)
我从来没有真正这样做过,但从理论上讲,你应该可以通过supporting IErrorInfo来做到这一点。 Marshal.GetExceptionForHR()
有一个带有IErrorInfo指针的重载。
顺便说一下,你不必手动调用Marshal.ThrowExceptionForHR()
- 如果你的方法返回HRESULT和[out]
参数作为返回值你可以在.NET中声明它返回返回值和如果HRESULT指示失败,则set PreserveSig=false和CLR将自动抛出异常。