CA2201:不要引发保留的异常类型
类型名 |
DoNotRaiseReservedExceptionTypes |
CheckId |
CA2201 |
类别 |
Microsoft.Usage |
是否重大更改 |
是 |
原因
某方法引发的异常类型过于一般或者是运行时保留的类型。
规则说明
下面的异常类型过于一般,不能向用户提供足够信息:
下面的异常类型是保留类型,仅应由公共语言运行时引发:
不要引发一般异常
如果引发一般异常类型(例如库或框架中的 Exception 或 SystemException),则会强制使用者捕捉所有异常,包括使用者不知如何处理的未知异常。
应引发框架中已存在的派生程度更高的类型,或创建从 Exception 派生的自己的类型。
引发特定的异常
下表列出了参数和验证这些参数将引发的异常,包括属性的 set 访问器中的 value 参数。
参数说明 |
异常 |
---|---|
null 引用 |
|
超出值的允许范围(例如集合或列表的索引) |
|
无效的 enum 值 |
|
包含的格式不符合方法的参数规范(例如 ToString(String) 的格式字符串) |
|
其他无效情况 |
当操作对对象的当前状态无效时 引发 System.InvalidOperationException
对已释放的对象执行操作时 引发 System.ObjectDisposedException
当操作不受支持(例如,在打开用于读取的 Stream 中重写 Stream.Write)时 引发 System.NotSupportedException
转换会导致溢出(例如,显式强制转换运算符重载)时 引发 System.OverflowException
对于所有其他情形,请考虑创建从 Exception 派生的自己的类型并引发该异常。
如何解决冲突
要修复与该规则的冲突,请将引发的异常类型更改为不是保留类型之一的特定类型。
何时禁止显示警告
不要禁止显示此规则发出的警告。