CA2219:在异常子句中不引发异常
属性 | 值 |
---|---|
规则 ID | CA2219 |
标题 | 在异常子句中不引发异常 |
类别 | 使用情况 |
修复是中断修复还是非中断修复 | 非中断,中断 |
在 .NET 8 中默认启用 | 作为建议 |
原因
finally
、filter 或 fault 子句中引发了异常。
规则说明
当异常子句中引发异常时,会大大增加调试的难度。
如果在 finally
或 fault 子句中引发异常,新异常将隐藏活动异常(如果存在)。 这使得很难检测和调试原始错误。
当 filter 子句中引发异常时,运行时会默默捕获异常,并导致 filter 评估为 false。 无法区分评估为 false 的 filter 和从 filter 中引发的异常。 这使得很难检测和调试 filter 逻辑中的错误。
如何解决冲突
若要解决此规则的冲突,请不要从 finally
、filter 或 fault 子句中显式引发异常。
何时禁止显示警告
请勿禁止显示此规则的警告。 无论何种情况,在异常子句中引发的异常都对执行代码无益。