En .NET, les signatures de méthode ne me disent pas si j'ai manqué de manipuler certaines exceptions pouvant être lancées par mon code. Y a-t-il un outil qui peut vous avertir, si disait que j'utilise une hache enlever, mais je n'ai pas géré l'argumentnullexception? Je ne veux pas être surpris du temps d'exécution. P>
Et cela signifie-t-il que vous devez connaître très bien votre code, sinon des exceptions non cochées peuvent être plus difficiles à utiliser? P>
4 Réponses :
Il n'y a pas de support de langue pour ce que vous essayez d'accomplir. Nous avons écrit une addition douanière à VS pour vous assurer que tous les points d'entrée de notre API avaient essayé des captures pour la journalisation. Cependant, je n'ai jamais vu la valeur dans les langues qui vous ont obligé à couvrir toutes les cas d'exception déclarées possibles car vous devez toujours écrire du code pour faire quelque chose de significatif avec l'erreur. La plupart des gens viennent de regarder ce que la compliance se plaint d'écrire un gestionnaire et de cacher ce qui pourrait être une erreur utile dans un code inutile. Dans certains cas, il est préférable d'échouer et de savoir qu'il y a un problème. P>
Je conviens que c'est une mauvaise chose à attraper des exceptions et à ne pas l'utiliser correctement pour prendre une décision sur la manière dont vous programmez la réagir est mauvaise. C'est comme dans VB6 de dire simplement sur erreur CV Suivant code>.
En réalité, la gestion des exceptions inattendues en terminant le programme est la meilleure façon de faire face à cette situation, car, en général, l'État du programme n'est pas défini lorsque quelque chose d'inattendu se produit. Si vous vous connectez toutes les exceptions et que vous avez un ensemble décent d'essais d'acceptation, vous pouvez éliminer les problèmes provenant d'exceptions inattendues dus au flux de programme. P>
Programmation défensive En vérifiant les entrées de méthode, les tests d'unités des classes et la compréhension de votre cadre feront la plupart des exceptions attendues. P>
Vous devez ajouter le gestionnaire d'exception de niveau supérieur pour votre application et votre appareil d'écriture, de test fonctionnel et d'intégration pour votre application, qui testera tous les cas d'utilisation possibles. Cela vous aidera à éliminer presque toutes les exceptions non cochées. P>
Essayez également de ne pas attraper des exceptions, mais éliminez la raison. (c'est-à-dire pas attraper argumentnulxception code> mais ne passe pas
null code> p>
pour les applications Windows:
AppDomain currentDomain = default(AppDomain); currentDomain = AppDomain.CurrentDomain; // Handler for unhandled exceptions. currentDomain.UnhandledException += UnhandledExceptionHandler; // Handler for exceptions in threads behind forms. Application.ThreadException += ThreadExceptionHandler; public static void UnhandledExceptionHandler(object sender, UnhandledExceptionEventArgs e) { } public static void ThreadExceptionHandler(object sender, Threading.ThreadExceptionEventArgs e) { }
@Aseem: Je ne sais pas que je comprends cela .. Ainsi, toutes les exceptions liées à l'affichage non manquées et affectées viendront ici au cas où je ne les aurais pas manipulé, et cela fournit une certaine sécurité. Est-ce que votre intention ici?
Oui ... Vous pouvez alors décider quoi faire avec ces exceptions.