Compartir a través de


CA2201: No provocar tipos de excepción reservados

Nombre de tipo

DoNotRaiseReservedExceptionTypes

Identificador de comprobación

CA2201

Categoría

Microsoft.Usage

Cambio problemático

Causa

Un método provoca un tipo de excepción que es demasiado general o que se reserva por el motor en tiempo de ejecución.

Descripción de la regla

Los tipos de excepción siguientes son demasiado generales para proporcionar la información suficiente al usuario:

Se reservan los tipos de excepción siguientes y sólo deberían ser producidos por Common Language Runtime:

No producir excepciones generales

Si produce un tipo de excepción general, como Exception o SystemException en una biblioteca o marco, obliga a los consumidores a detectar todas las excepciones, incluso las excepciones desconocidas que no saben tratar.

En su lugar, produzca un tipo más derivado que ya exista en el marco o cree su propio tipo que se derive de Exception.

Producir las excepciones específicas

La tabla siguiente muestra parámetros y las excepciones a producir al validar el parámetro, donde se incluye el parámetro de valor en el descriptor de acceso set de una propiedad:

Descripción del parámetro

Excepción

Referencia null. 

System.ArgumentNullException

Fuera del intervalo de valores permitido (como un índice para una colección o lista)

System.ArgumentOutOfRangeException

Valor no válido enum

System.ComponentModel.InvalidEnumArgumentException

Contiene un formato que no cumple las especificaciones de parámetro de un método (como la cadena del formato para ToString(String))

System.FormatException

De lo contrario no válido

System.ArgumentException

Cuando una operación no es válida para el estado actual de un objeto, produzca System.InvalidOperationException

Cuando una operación se realiza en un objeto que se ha eliminado, produzca System.ObjectDisposedException

Cuando una operación no se admite (como en un Stream.Write invalidado en una Secuencia que se ha abierto para lectura), produzca System.NotSupportedException

Cuando una conversión provocaría un desbordamiento (como en una sobrecarga del operador de conversión explícita), produzca System.OverflowException

Para el resto de situaciones, considere crear su propio tipo que se derive de Exception y produzca eso.

Cómo corregir infracciones

Para corregir una infracción de esta regla, cambie el tipo de la excepción producida para un tipo específico que no es uno de los reservados.

Cuándo suprimir advertencias

No suprima las advertencias de esta regla.

Reglas relacionadas

CA1031: No capturar los tipos de excepción general