CA2201:不要引發保留的例外狀況類型

屬性
規則識別碼 CA2201
標題 不要引發保留的例外狀況類型
類別 使用方式
修正程式是中斷或非中斷 中斷
預設在 .NET 8 中啟用 No

原因

方法會引發太一般或運行時間保留的例外狀況類型。

檔案描述

下列例外狀況類型太一般,無法為使用者提供足夠的資訊:

下列例外狀況類型是保留的,而且應該只由 Common Language Runtime 擲回:

不要擲回一般例外狀況

如果您在連結庫或架構中擲回一般例外狀況類型,例如 ExceptionSystemException,它會強制取用者攔截所有例外狀況,包括不知道如何處理的未知例外狀況。

相反地,請擲回已存在於架構中的衍生型別,或建立衍生自 Exception的自有型別。

擲回特定例外狀況

下表顯示針對各種無效自變數類型擲回的例外狀況,包括 屬性存取 set 子中的 value 參數。

無效引數 例外狀況
null 參考 ArgumentNullException
超出允許的值範圍(例如集合或清單的索引) ArgumentOutOfRangeException
無效 enum 的值 InvalidEnumArgumentException
包含不符合方法參數規格的格式(例如的 ToString(String)格式字串) FormatException
否則無效 ArgumentException

下表顯示針對各種無效作業類型擲回的例外狀況。

作業無效 例外狀況
作業對物件的目前狀態無效。 InvalidOperationException
作業會在已處置的物件上執行。 ObjectDisposedException
不支持作業(例如,在開啟以供讀取的數據流中覆寫 Stream.Write )。 NotSupportedException
轉換會導致溢位(例如在明確的轉換運算元多載中)。 OverflowException

針對所有其他情況,請考慮建立衍生自 Exception 並擲回的您自己的類型。

如何修正違規

若要修正此規則的違規,請將擲回例外狀況的類型變更為非其中一個保留類型的特定類型。

隱藏警告的時機

請勿隱藏此規則的警告。