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