Comparteix a través de


CA2219: No producir excepciones en cláusulas de excepción

Propiedad Valor
Identificador de la regla CA2219
Título No producir excepciones en cláusulas de excepción
Categoría Uso
La corrección interrumpe o no interrumpe Continuo, Interrumpido
Habilitado de forma predeterminada en .NET 10 Como sugerencia
Idiomas aplicables C# y Visual Basic

Causa

Se lanza una excepción desde un finally, filtro o cláusula de error.

Descripción de la regla

Cuando se genera una excepción en una cláusula de excepción, aumenta considerablemente la dificultad de la depuración.

Cuando se genera una excepción en una cláusula de error o finally, la nueva excepción oculta la excepción activa, si está presente. Esto hace que el error original sea difícil de detectar y depurar.

Cuando se genera una excepción en una cláusula de filtro, el entorno de ejecución detecta la excepción de forma silenciosa y hace que el filtro se evalúe como falso. No hay ninguna manera de identificar la diferencia entre el filtro que se evalúa como falso y una excepción que se lanza desde un filtro. Esto hace que sea difícil detectar y depurar errores en la lógica del filtro.

Cómo corregir infracciones

Para corregir esta infracción de esta regla, no genere explícitamente una excepción a partir de una cláusula de error, filtro o finally.

Example

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

Cuándo suprimir las advertencias

No suprima las advertencias para esta regla. No hay ningún escenario en el que una excepción generada en una cláusula de excepción proporcione una ventaja para el código de ejecución.

CA1065: No producir excepciones en ubicaciones inesperadas

Consulte también