CA2201:不要引發保留的例外狀況類型
型別名稱 |
DoNotRaiseReservedExceptionTypes |
CheckId |
CA2201 |
分類 |
Microsoft.Usage |
中斷變更 |
中斷 |
原因
方法所引發的例外狀況型別過於一般性,或是執行階段所保留的型別。
規則描述
下列的例外狀況型別過於一般性,無法提供使用者足夠的資訊:
下列的例外狀況型別已保留,只能由 Common Language Runtime 擲回:
請勿擲回一般例外狀況
如果擲回一般例外狀況型別,例如程式庫或架構中的 Exception 或 SystemException,會強制消費者攔截所有例外狀況,包括他們不知該如何處理的未知例外狀況。
請改為擲回在架構中已經存在的更為衍生的型別,或是您自己建立衍生自 Exception 的型別。
擲回特定例外狀況
下表顯示參數以及驗證該參數時所擲回的例外狀況 (包括屬性 set 存取子中的值參數):
參數描述 |
例外狀況 |
---|---|
null 參考 |
|
超過允許值範圍 (例如集合或清單的索引) |
|
無效 enum 值 |
|
包含的格式不符合方法的參數規格 (例如 ToString(String) 的格式字串) |
|
因其他原因失效 |
當作業對物件目前狀態無效時,擲回 InvalidOperationException
當作業在已經處置的物件上執行時,擲回 ObjectDisposedException
當不支援作業 (例如在為讀取而開啟的資料流中覆寫 Stream.Write) 時,擲回 NotSupportedException
當轉換會造成溢位 (例如明確轉型運算子多載) 時,擲回 OverflowException
至於所有其他的情況,請考慮您自己建立衍生自 Exception 的型別以擲回。
如何修正違規
若要修正此規則的違規情形,請將擲回的例外狀況型別變更為保留型別以外的特定型別。
隱藏警告的時機
請勿隱藏此規則的警告。