處理 COM+ 管理員 錯誤
使用 COM 時產生的錯誤 管理員 物件會以兩種方式回報,如下所示:
- 使用 COM 管理員 連結庫特定的錯誤碼。
- 使用特殊 ErrorInfo 集合中可用的擴充錯誤資訊。
錯誤代碼
您可以處理系統管理錯誤碼,就像任何 COM 錯誤訊息一樣。 在 Microsoft Visual C++ 中,這些程式代碼會以 HRESULT 值的形式傳回。 在 Microsoft Visual Basic 中,它們會擲回為您可以攔截的例外狀況。 針對 C++ 程式設計人員,COM+ 系統管理錯誤碼定義於 Winerror.h 中。 針對 Visual Basic 程式設計人員,他們可透過 Visual Basic IDE 取得。
ErrorInfo 集合
發生錯誤時,由某種失敗碼發出訊號,視錯誤的性質而定,可能會提供更詳細的資訊。 COM 管理員 物件會在失敗的確切原因難以判斷的情況下提供擴充資訊,而不需要詳細的報告,例如具有多個讀取和寫入作業。
例如,當您在 COM 上使用 Populate 和 SaveChanges 之類的方法時 管理員 CatalogCollection 物件,您可以讀取或寫入集合中每個項目的數據。 可能會發生複雜的錯誤,而且很難根據單一數值錯誤碼進行診斷。 因此,COM 管理員 連結庫會透過特殊集合來擴充錯誤資訊。
當擴充錯誤資訊可用時,它會放在 ErrorInfo 集合中,該集合與發生錯誤的原始集合相關。 若要擷取錯誤報告,請取得 與原始集合相關的 ErrorInfo 集合,並檢查它所包含的專案。 您可以在 COM 管理員 CatalogCollection 上使用 GetCollection 來擷取 ErrorInfo 集合,讓第二個參數保持空白,而您通常會指定父專案的 Key 屬性。
當您收到錯誤時,必須立即取得並填入 失敗之集合的 ErrorInfo 集合,而不需要在該集合上執行任何其他作業。 否則, ErrorInfo 集合會重設,而且不會詳細說明該失敗。
ErrorInfo 集合中的專案會公開特殊的錯誤報告屬性 MajorRef 和 MinorRef,其中詳細說明錯誤的特定原因。 如需詳細資訊,請參閱 ErrorInfo。
相關主題