通过


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

属性
规则 ID CA2219
标题 在异常子句中不引发异常
类别 使用情况
修复会引起中断还是不会引起中断 非中断,中断
在 .NET 10 中默认启用 作为一种建议
适用的语言 C# 和 Visual Basic

原因

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

规则说明

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

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

当筛选子句中引发异常时,运行时环境会悄然捕获该异常,并使筛选结果为 false。 无法区分对 filter 评估为 false 的结果和从 filter 中抛出的异常。 这使得很难检测和调试过滤逻辑中的错误。

如何解决违规

为了解决此规则的违反,请不要从 finally、过滤器或故障子句中显式抛出异常。

Example

try
{
    // ...
}
finally
{
    // This code violates the rule.
    throw new Exception();
}

何时禁止显示警告

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

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

另请参阅