CA2201: No provocar tipos de excepción reservados
Nombre de tipo |
DoNotRaiseReservedExceptionTypes |
Identificador de comprobación |
CA2201 |
Categoría |
Microsoft.Usage |
Cambio problemático |
Sí |
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. |
|
Fuera del intervalo de valores permitido (como un índice para una colección o lista) |
|
Valor no válido enum |
|
Contiene un formato que no cumple las especificaciones de parámetro de un método (como la cadena del formato para ToString(String)) |
|
De lo contrario no válido |
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.