所有問題都是藉由異常狀況物件來報告,
該物件是 WVCM 所定義之異常狀況物件的子類別。用戶端可以從這類異常狀況取得下列資訊:
- 原因碼(WVCM 列舉的延伸規格),其會分類要報告的發生事件類型(例如:WvcmException.ReasonCode.READ_FAILED)。
- 子層原因碼,其提供在原因碼的分類內,該發生事件較細的分類(例如:StpException.StpReasonCode.CONFLICT)。
- 與語言環境無關的訊息 ID(編目索引)和專屬報告之發生事件的引數值。這項資訊適用於記載用途,也可以用來產生本地化的訊息。
- 巢狀異常狀況的清單,每一個都說明一項提供給該異常狀況所報告之發生事件的子層發生事件。
- 如果是資源存取問題,發生事件中所包含的主要資源,其通常是已失敗作業的目標資源。
- 如果是內容存取問題,發生事件中所包含之主要資源的內容。
- 如果是對多個資源定址的作業,則有作業順利完成的資源清單。
- 針對已選取的發生事件,則有專屬報告之發生事件的其他資訊。
每一項作業都會定義一組前置條件,這些條件必須符合,作業才會順利。例如,要讀取其內容的資源必須存在、與要建立之資源同名的資源不能存在、要移出的資源必須已版本化且已移入。
違反這類前置條件會導致作業擲出異常狀況。
作業經常可以套用至資源的集合。如果任一資源的作業失敗,則會擲出異常狀況(並在異常狀況物件中報告成功的項目)。
伺服器在讀取或寫入資源的內容或 Meta 內容時所發生的問題,並不會造成 Rational® CM API 作業擲出異常狀況。反之,該異常狀況會與已傳回虛擬物件內的內容相關聯。僅當用戶端嘗試從虛擬物件擷取該內容值時,才會擲出異常狀況。用戶端也可能會在擷取內容值之前先詢問虛擬物件,以判斷是否有任何問題,並取得異常狀況而不擲出。請參閱關於內容的其他資訊。
Rational CM API 包含下列幾種主要的異常狀況:
- StpException(延伸 WvcmException)
- StpPropertyException(延伸 StpException)
- StpPartialResultsException(延伸 PropertyException)
StpException
StpException 是
WvcmException 的延伸規格,
也是 Rational CM API 所擲出之所有已檢查的異常狀況的基礎類別。所有 WVCM 定義方法的所有實作都會擲出 WvcmException。Rational CM API 的所有公用方法(WVCM 的延伸規格)也都會擲出 WvcmException。不過,這些所有方法的實作一律只會擲出 StpExceptions,而非 WvcmExceptions。這些使用慣例所適用的情況如下:
- 在任何方法宣告(公用或其他)中絕不會擲出 StpException。即使方法擲出 StpException,其宣告的方式也會視同它是擲出 WvcmException。
- 方法絕不會擲出新的 WvcmException。雖然異常狀況可以用 WvcmException 表示,但它一律作為新的 StpException 而擲出。
StpPropertyException
StpPropertyException 延伸了 StpExtension,
也是與讀取或寫入資源內容相關聯之錯誤的基礎異常狀況類別。
在從伺服器要求內容值之後,其名稱即會與結果相關,並儲存在虛擬物件中。如果擷取嘗試已成功,則該名稱會與擷取的值相關聯,
如果擷取嘗試不成功,則會與狀態資訊相關聯(以 StpPropertyException 物件的形式)。
StpPartialResultsException
StpPartialResultsException 延伸了 StpPropertyException,其用來報告包含多個資源的作業或內容失敗。它可用來作為 ResourceList(其通常是由作業或內容傳回)的替代項目。它包含一個 ResourceList(其具有已順利處理之資源的虛擬物件),以及 StpExceptions 的清單(每一個皆對應於一個作業失敗的資源)。如需詳細資訊,請參閱 Javadoc 資訊。