2010-04-29 34 views
2

我在做一個COM接口,C#將使用,但我想知道我是如何檢查錯誤的異常處理在C#結束。就目前而言,我只是爲大多數方法返回HRESTULT或bool,然後執行Marshal.ThrowExceptionForHR,但在其中一些方法中可能會出現一些錯誤,並返回一個E_FAIL並不會削減它。從c#調用COM DLL,HRESULT錯誤處理?

我能做些什麼才能返回更多信息?我可以做我自己的HRESULT嗎?

回答

1

我從來沒有真正做到這一點,但理論上你應該可以做到這一點supporting IErrorInfoMarshal.GetExceptionForHR()有一個需要IErrorInfo指針的重載。

順便說一句,你不應該有手動調用Marshal.ThrowExceptionForHR() - 如果你的方法返回HRESULT和和[out]參數返回值可以在.NET中聲明其爲返回的返回值和set PreserveSig=false和CLR會自動拋出如果HRESULT指示失敗,則爲例外。

+0

酷我會看看! – Daniel 2010-04-29 04:42:21

相關問題