盡管可以使用COMException類向非托管客戶端返回特定的HRESULT,但引發特定的.NET Framework異常比使用泛型異常要好。考慮到托管客戶端和非托管客戶端都可以使用.NET Framework對象,向托管調用方拋出HRESULT比引發異常更難理解。
以下是對COMException異常進行故障排除的一些注意事項。
- 檢查ErrorCode屬性
當運行時遇到不熟悉的HRESULT並引發COMException異常時,ErrorCode屬性將包含錯誤消息,或者如果錯誤消息不可用,則包含八位數的HRESULT值。錯誤消息或HRESULT值可以幫助您確定異常的原因。 - 有關HRESULT值的列表,請參閱HRESULT值。
- 后期綁定參數和Microsoft Office對象
當向Microsoft Office對象的方法傳遞后期綁定參數時,當對象是COM對象時,可能會引發COMException異常。后期綁定器假定此類方法調用涉及ByRef參數,並且傳遞的屬性具有set訪問器。如果屬性不存在,則.NET Framework將生成MissingMethodException異常(CORE_E_MISSINGMETHOD HRESULT)。要解決此問題,請使用早期綁定對象或傳遞變量而不是對象的屬性。 - visualstudio和宿主進程
COM用於在visualstudio和宿主進程之間進行通信。因為它是在代碼運行之前使用的,所以調用CoInitializeSecurity會引發此異常。在某些情況下,以管理員身份運行visualstudio可能會解決此問題。您也可以禁用托管進程。