异常应该是公共的
更新:2007 年 11 月
TypeName |
ExceptionsShouldBePublic |
CheckId |
CA1064 |
类别 |
Microsoft.Design |
是否重大更改 |
否 |
原因
非公共异常直接从 System.Exception、System.SystemException 或 System.ApplicationException 派生。
规则说明
内部异常仅在其自己的内部范围内可见。当异常超出内部范围后,只能使用基异常来捕获该异常。如果内部异常是从 T:System.Exception、T:System.SystemException 或 T:System.ApplicationException 继承而来,外部代码将没有足够的信息了解如何处理该异常。
但是,如果代码具有一个公共异常,该异常随后被用作内部异常的基异常,那么有理由假定代码将来可以对基异常执行某些智能操作。公共异常将获得比 T:System.Exception、T:System.SystemException 或 T:System.ApplicationException 提供的信息更多的信息。
如何修复冲突
使异常成为公共异常,或者从除 System.Exception、System.SystemException 或 System.ApplicationException 之外的公共异常派生内部异常。
何时禁止显示警告
如果您确定在任何情况下私有异常都将在其自己的内部范围内被捕获,则可以禁止显示有关此规则的消息。
示例
下面演示与此规则冲突的三个示例。