Partager via


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 

System.ArgumentNullException

À l'extérieur de la plage de valeurs autorisée (telle qu'un index pour une collection ou liste)

System.ArgumentOutOfRangeException

Valeur enum non valide

System.ComponentModel.InvalidEnumArgumentException

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))

System.FormatException

Sinon non valide

System.ArgumentException

Lorsqu'une opération n'est pas valide pour l'état actuel d'un objet levez System.InvalidOperationException

Lorsqu'une opération est exécutée sur un objet qui a été supprimé levez System.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 System.NotSupportedException

Lorsqu'une conversion provoquerait un dépassement de capacité (tel que dans une surcharge explicite de l'opérateur de cast) levez System.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.

Règles connexes

CA1031 : Ne pas intercepter des types d'exception générale