CA2219:在异常子句中不引发异常

属性
规则 ID CA2219
标题 在异常子句中不引发异常
类别 使用情况
修复是中断修复还是非中断修复 非中断,中断
在 .NET 8 中默认启用 作为建议

原因

finally、filter 或 fault 子句中引发了异常。

规则说明

当异常子句中引发异常时,会大大增加调试的难度。

如果在 finally 或 fault 子句中引发异常,新异常将隐藏活动异常(如果存在)。 这使得很难检测和调试原始错误。

当 filter 子句中引发异常时,运行时会默默捕获异常,并导致 filter 评估为 false。 无法区分评估为 false 的 filter 和从 filter 中引发的异常。 这使得很难检测和调试 filter 逻辑中的错误。

如何解决冲突

若要解决此规则的冲突,请不要从 finally、filter 或 fault 子句中显式引发异常。

何时禁止显示警告

请勿禁止显示此规则的警告。 无论何种情况,在异常子句中引发的异常都对执行代码无益。

CA1065:不要在意外的位置引发异常

另请参阅