Meilleures pratiques de gestion des exceptions ou recommandations? [fermé]

12

Je pense que les deux principaux problèmes avec mes programmes sont ma structure / organisation de code et ma gestion des erreurs. Je lis Code Complete 2, mais j'ai besoin de quelque chose à lire pour travailler avec des problèmes potentiels.

Par exemple, sur un site Web, si quelque chose ne peut se produire que si l'utilisateur manipule des données via javascript, écrivez-vous pour cela? Aussi, quand ne détectez-vous pas d'erreurs? Lorsque vous écrivez une classe qui attend une chaîne et un entier en entrée, et qu'ils ne sont pas une chaîne et un entier, vérifiez-vous cela ou laissez-vous la bulle jusqu'à la méthode d'appel qui a passé des paramètres incorrects?

Je sais que c'est un vaste sujet qui ne peut pas être répondu en une seule réponse ici, donc ce que je recherche est un livre ou une ressource qui est communément acceptée comme enseignant une bonne pratique de gestion des exceptions.

mowwwalker
la source
1
quel langage et plateforme de développement utilisez-vous?
Yusubov
1
Je pense que "Clean code" a un bon chapitre sur ce problème
Hoàng Long
Ce qu'a dit @ElYusubov. Les détails de mise en œuvre et les normes de la langue / plate-forme avec laquelle vous traitez ont beaucoup d'influence sur les meilleures pratiques.
vaughandroid

Réponses:

12

L'une des bonnes choses à retenir est d'effectuer la gestion des exceptions when there is a need.

Pour la plate-forme de développement .NET, suivez simplement les directives MSDN - Meilleures pratiques pour la gestion des exceptions , ainsi que consultez cet article de projet de code sympa - Meilleures pratiques de gestion des exceptions dans .NET

Cependant, les directives suivantes sont principalement valables pour toute plateforme de développement:

  • Ne gérez pas la logique métier avec des exceptions. Utilisez plutôt des instructions conditionnelles. Si un contrôle peut être fait avec l'instruction if-else clairement, n'utilisez pas d'exceptions car cela réduit la lisibilité et les performances (par exemple contrôle nul, division par contrôle zéro). .

  • Les noms d'exception doivent être clairs et significatifs, indiquant les causes de l'exception.

  • Lance des exceptions pour les conditions d'erreur lors de l'implémentation d'une méthode. Par exemple, si vous renvoyez des valeurs -1, -2, -3, etc. au lieu de FileNotFoundException, cette méthode ne peut pas être comprise.

  • Attrapez des exceptions spécifiques au lieu de la classe d'exception supérieure. Cela apportera des performances supplémentaires, une lisibilité et une gestion des exceptions plus spécifiques.

  • Le contrôle nul avec des conditions n'est pas une alternative à la capture de NullPointerException. Si une méthode peut retourner null, contrôlez-la avec l'instruction if-else. Si un retour peut lever NullPointerException, interceptez-le.

  • Essayez de ne pas repousser l'exception à cause du prix. Mais si la relance avait été un must, relancez la même exception au lieu de créer une nouvelle exception. Cela apportera des performances supplémentaires. Vous pouvez ajouter des informations supplémentaires dans chaque couche à cette exception.

  • Définissez votre propre hiérarchie d'exceptions en étendant la classe d'exception actuelle (par exemple UserException, SystemException et leurs sous-types) et utilisez-les. En faisant cela, vous pouvez spécialiser vos exceptions et définir un module / couche d'exceptions réutilisable. plus à suivre dans ce lien

Yusubov
la source
2
Quelques bons points généraux, bien que je ne pense pas que votre 5ème point ("Null control with conditionals ...") soit très clair.
vaughandroid