DA0007 : Ne pas utiliser d'exceptions pour le flux de contrôle

ID de la règle

DA0007

Catégorie

Utilisation du .NET Framework

Méthodes de profilage

Tous

Message

Un nombre élevé d'exceptions est levé régulièrement. Envisagez de réduire l'utilisation des exceptions dans la logique du programme.

Type de message

Avertissement

Lorsque vous profilez en utilisant les méthodes d'échantillonnage, de mémoire. NET ou de conflits de ressources, vous devez collecter au moins 25 échantillons pour déclencher cette règle.

Cause

Un taux élevé de gestionnaires d'exceptions .NET Framework a été appelé dans les données de profilage. Utilisez une autre logique de flux de contrôle pour réduire le nombre d'exceptions levées.

Description de la règle

Alors que l'utilisation de gestionnaires d'exceptions pour intercepter des erreurs et d'autres événements qui interrompent l'exécution du programme est une méthode conseillée, l'utilisation de gestionnaire d'exceptions dans le cadre de la logique d'exécution du programme normale peut être coûteuse et doit être évitée. Dans la plupart des cas, les exceptions doivent être utilisées uniquement pour les circonstances qui se produisent rarement et ne sont pas attendues. Les exceptions ne doivent pas être utilisées pour retourner des valeurs dans le cadre du flux normal du programme. Dans de nombreux cas, vous pouvez éviter de déclencher des exceptions en validant des valeurs et en utilisant la logique conditionnelle pour arrêter l'exécution des instructions qui provoquent le problème.

Pour plus d'informations, consultez la section de Exception Management de Chapter 5 — Improving Managed Code Performance dans le volume Improving .NET Application Performance and Scalability de la bibliothèque Microsoft Patterns and Practices sur MSDN.

Comment examiner un avertissement

Double-cliquez sur le message dans la fenêtre Liste d'erreurs pour naviguer jusqu'à l'affichage Marques. Recherchez la colonne qui contient les mesures Exceptions CLR .NET(@ProcessInstance)\Nombre d'exceptions levées/s. Déterminez s'il y a des phases spécifiques d'exécution du programme où la gestion des exceptions est plus fréquente que d'autres. À l'aide d'un profil d'échantillonnage, essayez d'identifier les instructions throw et les blocs try/catch qui génèrent des exceptions fréquentes. Si nécessaire, ajoutez la logique aux blocs catch pour vous aider à comprendre quelles exceptions sont le plus fréquemment gérées. Lorsque c'est possible, remplacez des instructions throw ou des blocs catch exécutés fréquemment par la logique de contrôle de flux simple ou le code de validation.

Par exemple, si vous constatez que votre application gère des exceptions DivideByZeroException fréquentes, l'ajout d'une logique à votre programme pour rechercher des dénominateurs avec les valeurs zéro améliorera la performance de l'application.