共用方式為


處理 COM Interop 例外狀況

Managed 和 Unmanaged 程式碼可以同時使用來處理例外狀況。如果方法在 Managed 程式碼中擲回例外狀況,Common Language Runtime 可以傳遞 HRESULT 至 COM 物件。如果方法在 Unmanaged 程式碼中因傳回失敗 HRESULT 而失敗,Runtime 將擲回可為 Managed 程式碼所攔截的例外狀況。

Runtime 自動將 HRESULT 從 COM Interop 對應至更多特定例外狀況。例如,E_ACCESSDENIED 變成 UnauthorizedAccessException、E_OUTOFMEMORY 變成 OutOfMemoryException,等等。

如果 HRESULT 是自訂結果,或是當它對 Runtime 而言是未知的,則 Runtime 會將泛用 COMException 傳遞至用戶端。COMExceptionErrorCode 屬性會包含 HRESULT 值。

如需 COM interop 的完整討論,請參閱進階 COM 互通性

使用 IErrorInfo

當錯誤從 COM 傳遞至 Managed 程式碼時,Runtime 會以錯誤資訊填入 (Populate) 例外狀況物件。支援 IErrorInfo 和傳回 HRESULTS 的 COM 物件將提供這個資訊給 Managed 程式碼例外狀況。例如,Runtime 對應 COM 錯誤的說明至例外狀況的 Message 屬性。如果 HRESULT 沒有提供額外錯誤資訊,Runtime 會以預設值填滿例外狀況的許多屬性。

如果方法在 Unmanaged 程式碼中失敗,例外狀況可以傳遞到 Managed 程式碼片段。HRESULTS 和例外狀況主題中包含示範 HRESULTS 如何對應至 Runtime 例外狀況物件的表格。

請參閱

其他資源

進階 COM 互通性
處理和擲回例外狀況