CA2201 : Ne levez pas des types d'exceptions réservés
TypeName |
DoNotRaiseReservedExceptionTypes |
CheckId |
CA2201 |
Catégorie |
Microsoft.Usage |
Modification avec rupture |
Oui |
Cause
Une méthode lève un type d'exception trop général ou réservé par l'exécution.
Description de la règle
Les types d'exception suivants sont trop généraux pour fournir des informations suffisantes à l'utilisateur :
Les types d'exception suivants sont réservés et doivent être levés uniquement par le Common Language Runtime :
Ne levez pas d'exceptions générales
Si vous levez un type d'exception générale, tel que Exception ou SystemException dans une bibliothèque ou infrastructure, cela force les consommateurs à intercepter toutes les exceptions, y compris des exceptions inconnues qu'ils ne savent pas gérer.
Levez plutôt un type plus dérivé qui existe déjà dans l'infrastructure ou créez votre propre type qui dérive de Exception.
Levez des exceptions spécifiques
La table suivante indique des 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é :
Description des paramètres |
Exception |
---|---|
Référence null |
|
À l'extérieur de la plage de valeurs autorisée (telle qu'un index pour une collection ou liste) |
|
Valeur enum non valide |
|
Contient un format qui ne répond pas aux caractéristiques de paramètre d'une méthode (telles que la chaîne de format pour ToString(String)) |
|
Sinon non valide |
Lorsqu'une opération n'est pas valide pour l'état actuel d'un objet levez InvalidOperationException
Lorsqu'une opération est exécutée sur un objet qui a été supprimé levez ObjectDisposedException
Lorsqu'une opération n'est pas prise en charge (comme dans un Stream.Write substitué dans un Flux de données ouvert en lecture) levez NotSupportedException
Lorsqu'une conversion provoquerait un dépassement de capacité (tel que dans une surcharge explicite de l'opérateur de cast) levez OverflowException
Pour toutes les autres situations, envisagez de créer votre propre type qui dérive de Exception et levez cette exception.
Comment corriger les violations
Pour corriger une violation de cette règle, changez le type de l'exception levée en un type spécifique qui ne fait pas partie des types réservés.
Quand supprimer les avertissements
Ne supprimez aucun avertissement de cette règle.