CA2219:在异常子句中不引发异常
类型名 |
DoNotRaiseExceptionsInExceptionClauses |
CheckId |
CA2219 |
类别 |
Microsoft.Usage |
是否重大更改 |
否/是 |
原因
从 finally、filter 或 fault 子句中引发异常。
规则说明
如果在异常子句中引发异常,则会大大增加调试的难度。
如果在 finally 或 fault 子句中引发异常,新异常将隐藏活动异常(如果存在)。 这使得很难检测和调试原始错误。
在 filter 子句中引发异常时,运行时会在不提示的情况下捕捉该异常,这会导致筛选器计算为 false。 在计算为 false 的筛选器以及从筛选器中引发的异常之间,无法确定它们的区别。 这使得很难检测和调试筛选器逻辑中的错误。
如何解决冲突
若要修复与此规则相关的冲突,请不要从 finally、filter 或 fault 子句中显式引发异常。
何时禁止显示警告
不要禁止显示此规则的警告。 没有任何情况表明在异常子句中引发的异常可以为正在执行的代码带来任何好处。