管線元件會以兩種方式回報錯誤:
對於以 .NET 為基礎的元件,方法是透過擲回例外來處理。
針對以 COM 為基礎的元件,方法是設定 ErrorInfo 物件並傳回失敗的 HRESULT。
報告 .NET 資料流元件的錯誤
若要回報錯誤,.NET 為基礎的管線元件必須擲回例外狀況,並報告錯誤描述。 若要報告擲回錯誤的元件名稱,請設定 Exception 物件的 Source 屬性。
傳訊引擎會使用 Exception 物件的 Message 和 Source 屬性來報告錯誤。 下列訊息會寫入事件記錄檔:
「執行 [receive|send] 管線失敗:管線名稱>來源:<<來源> [接收位置|傳送埠:] <位置|埠名稱>原因:<訊息>。」
報告 COM 管線元件的錯誤
若要報告錯誤,以 COM 為基礎的管線元件會執行下列動作:
管線元件會呼叫 SetErrorInfo 方法來設定 IErrorInfo 物件。
管線元件會將失敗的 HRESULT 傳回給傳訊引擎。
傳訊引擎會使用 IErrorInfo 物件的 GetSource 和 GetDescription 屬性來報告錯誤。 如果未設定來源,則會使用元件的名稱。 如果未設定描述或未設定整個 ErrorInfo 物件,則會報告傳回的 HRESULT,而不是描述。 下列訊息會寫入事件記錄檔:
「執行 [receive|send] 管線失敗:管線名稱>來源:<<GetSource> [接收位置|傳送埠:] <位置|埠名稱>原因:<GetDescription 或 HRESULT>。」