CA2201 : Ne levez pas des types d'exceptions réservésCA2201: Do not raise reserved exception types

TypeNameTypeName DoNotRaiseReservedExceptionTypesDoNotRaiseReservedExceptionTypes
CheckIdCheckId CA2201CA2201
CategoryCategory Microsoft.UsageMicrosoft.Usage
Modification avec ruptureBreaking Change RuptureBreaking

CauseCause

Une méthode lève un type d’exception trop général ou qui est réservée par le runtime.A method raises an exception type that is too general or that is reserved by the runtime.

Description de la règleRule Description

Les types d’exception suivants sont trop généraux pour fournir suffisamment d’informations à l’utilisateur :The following exception types are too general to provide sufficient information to the user:

  • System.Exception

  • System.ApplicationException

  • System.SystemException

    Les types d’exception suivants sont réservés et doivent être levées uniquement par le common language runtime :The following exception types are reserved and should be thrown only by the common language runtime:

  • System.ExecutionEngineException

  • System.IndexOutOfRangeException

  • System.NullReferenceException

  • System.OutOfMemoryException

    Ne levez pas d’Exceptions généralesDo Not Throw General Exceptions

    Si vous levez un type d’exception générale, tel que Exception ou SystemException dans une bibliothèque ou une infrastructure, cela force les consommateurs à intercepter toutes les exceptions, y compris les exceptions inconnues qu’ils ne savent pas à gérer.If you throw a general exception type, such as Exception or SystemException in a library or framework, it forces consumers to catch all exceptions, including unknown exceptions that they do not know how to handle.

    Au lieu de cela, levez un type plus dérivé qui existe déjà dans le framework ou créer votre propre type qui dérive de Exception.Instead, either throw a more derived type that already exists in the framework, or create your own type that derives from Exception.

    Lever des Exceptions spécifiquesThrow Specific Exceptions

    Le tableau suivant présente les paramètres et les exceptions à lever lorsque vous validez le paramètre, y compris le paramètre de valeur dans l’accesseur set d’une propriété :The following table shows parameters and which exceptions to throw when you validate the parameter, including the value parameter in the set accessor of a property:

Description du paramètreParameter Description ExceptionException
null Référencenull reference System.ArgumentNullException
En dehors de la plage autorisée des valeurs (par exemple, un index pour une collection ou liste)Outside the allowed range of values (such as an index for a collection or list) System.ArgumentOutOfRangeException
Non valide enum valeurInvalid enum value System.ComponentModel.InvalidEnumArgumentException
Contient un format qui ne répond pas aux spécifications de paramètres d’une méthode (telles que la chaîne de format ToString(String))Contains a format that does not meet the parameter specifications of a method (such as the format string for ToString(String)) System.FormatException
Non valideOtherwise invalid System.ArgumentException

Lorsqu’une opération n’est pas valide pour l’état actuel d’un objet levez System.InvalidOperationExceptionWhen an operation is invalid for the current state of an object throw System.InvalidOperationException

Lorsqu’une opération est effectuée sur un objet qui a été supprimé levez System.ObjectDisposedExceptionWhen an operation is performed on an object that has been disposed throw System.ObjectDisposedException

Lorsqu’une opération n’est pas pris en charge (par exemple, dans un substituée Stream.Write dans un flux de données ouvert en lecture) lever System.NotSupportedExceptionWhen an operation is not supported (such as in an overridden Stream.Write in a Stream opened for reading) throw System.NotSupportedException

Lorsqu’une conversion provoquerait un dépassement de capacité (comme une surcharge d’opérateur de cast explicite) levez System.OverflowExceptionWhen a conversion would result in an overflow (such as in a explicit cast operator overload) throw System.OverflowException

Pour toutes les autres situations, envisagez de créer votre propre type qui dérive de Exception et levez cette exception.For all other situations, consider creating your own type that derives from Exception and throw that.

Comment corriger les violationsHow to Fix Violations

Pour corriger une violation de cette règle, modifiez le type de l’exception levée pour un type spécifique qui ne fait pas partie des types réservés.To fix a violation of this rule, change the type of the thrown exception to a specific type that is not one of the reserved types.

Quand supprimer les avertissementsWhen to Suppress Warnings

Ne supprimez aucun avertissement de cette règle.Do not suppress a warning from this rule.

CA1031 : Ne pas intercepter des types d’exception généraleCA1031: Do not catch general exception types