CA1513 : Utiliser le throw helper pour ObjectDisposedException

Propriété Valeur
Identificateur de la règle CA1513
Titre Utiliser l’assistance de levée d’ObjectDisposedException
Catégorie Maintenabilité
Le correctif a un effet disruptif ou non disruptif Non cassant
Activé par défaut dans .NET 10 À titre de suggestion
Langues applicables C# et Visual Basic

Cause

Le code vérifie si un objet est supprimé, puis lève une exception ObjectDisposedException sous certaines conditions.

Description de la règle

Les vérifications d’objet ont un impact important sur la taille du code, et dominent souvent le code pour les petites fonctions et les setters de propriétés. Ces vérifications empêchent l'inlining et provoquent une importante pollution du cache d'instructions. Les méthodes d’assistance pour lever une exception, comme ThrowIf, sont plus simples et plus efficaces que les blocs if qui construisent une nouvelle instance d’exception.

Exemple

L’extrait de code suivant montre une violation de CA1513 :

class C
{
    private bool _disposed = false;
    void M()
    {
        if (_disposed)
            throw new ObjectDisposedException(GetType().Name);
    }
}

L’extrait de code suivant montre le correctif :

class C
{
    private bool _disposed = false;
    void M()
    {
        ObjectDisposedException.ThrowIf(_disposed, this);
    }
}

Comment corriger les violations

Remplacez le bloc if qui lève l’exception par un appel à ThrowIf. Ou, dans Visual Studio, utilisez le menu Ampoule pour corriger automatiquement votre code.

Quand supprimer les avertissements

Il est sûr de supprimer une violation de cette règle si vous n’êtes pas préoccupé par la maintenance de votre code. Il est également très facile de supprimer les violations qui sont identifiées comme étant de faux positifs.

Supprimer un avertissement

Si vous voulez supprimer une seule violation, ajoutez des directives de préprocesseur à votre fichier source pour désactiver et réactiver la règle.

#pragma warning disable CA1513
// The code that's violating the rule is on this line.
#pragma warning restore CA1513

Pour désactiver la règle sur un fichier, un dossier ou un projet, définissez sa gravité sur none dans le fichier de configuration.

[*.{cs,vb}]
dotnet_diagnostic.CA1513.severity = none

Pour plus d’informations, consultez Comment supprimer les avertissements de l’analyse de code.