Question

Quand allez-vous commencer à écrire votre Exception Handling Code? Quand allez-vous commencer à écrire déclarations de journalisation.

Aux fins de l'élaboration de cette question, supposons que nous sommes sur la plate-forme .NET avec la journalisation log4net mais ne hésitez pas à répondre de manière générique.

Solution: un projet Windows Forms. Projets: l'interface utilisateur, BusinessRules, DataHandlers

Alors, allez-vous écrire votre DataHandlers qui fait votre Manipulations des données telles que Create, Read, Update, Delete premier.

Ensuite, suivez-le avec votre Business Rules

Et puis votre interface utilisateur ou toute autre permutation de ce qui précède.

Testez votre demande de fonctionnalité.

puis commencer à écrire votre code et la gestion des exceptions enfin votre code d'enregistrement?

Quand est un bon moment pour commencer à écrire votre code de traitement d'exception?

PS: Dans le livre code propre , disent-ils Écrivez votre try-catch-finally premier bloc. Cela, m'a incité à poser cette question.

Était-ce utile?

La solution

Vous écrivez votre code de gestion des exceptions lorsque vous écrivez la chose qui appelle quelque chose qui pourrait les exceptions de cause.

Par exemple, lorsque vous écrivez quelque chose qui envoie des données à un réseau, vous devez également écrire le code de connexion que les délais d'attente des poignées. L'exception est directement pertinent pour ce que vous faites, et le travail est frais dans votre esprit.

Par contre, si vous écrivez un analyseur qui soulève des exceptions lorsqu'il rencontre une unité de données de protocole malformé, vous ne pouvez pas écrire du code de gestion des exceptions pour les exceptions que l'analyseur produit . (Mais cours vous êtes tests d'écriture pour montrer comment et quand et pourquoi l'analyseur soulève des exceptions!)

La raison derrière la suggestion d'écrire votre try-catch-finally premier est deux fois: enfin est pour nettoyer les ressources que la fonction crée / consume, et écrit le prises est un beau rappel que les fonctions que vous appelez peut échouer, et vous devez gérer (si nécessaire) ces échecs.

J'ai tendance à ajouter l'enregistrement après le fait. Je ne sais pas si c'est sage, mais il est juste ce qui a fonctionné pour moi. Comme je commence l'exécution des tests d'acceptation, etc., et commencer à frapper des questions, puis-je ajouter la journalisation afin que je puisse suivre les erreurs. (Et puis je laisse la connecter.)

Autres conseils

Dans mon expérience, si vous ne codent écriture avec le traitement et l'enregistrement d'erreur appropriée dès le début, il ne sera pas fait en raison de contraintes de temps. Le plus d'efforts de développement de succès que j'ai été sur commencé avec le temps passé à déterminer la structure de l'application de base, y compris norme de codage, comment les erreurs seraient traitées, l'exploitation forestière, l'architecture de base et outils de test.

Dans le cas contraire, vous constaterez que vous avez des tâches pour la version 2.0 comme « Amélioration de la gestion d'erreur » et « créer un système d'enregistrement ». Ceux-ci seront coupés en faveur de nouvelles fonctionnalités, et parce que vous avez « trop à faire », fixer tous les bugs dans les cas d'erreur que vous ne pensiez pas. (Qui prend une éternité, parce que vous avez pas de système d'enregistrement.

dépend de ce que vous faites

pour les exceptions:

Si vous écrivez quelque chose qui est susceptible d'avoir des erreurs ou quelque chose où il y a de bons points de niveau supérieur pour laisser la bulle des exceptions à les écrire comme vous allez.

Si vous écrivez quelque chose que les besoins et la performance a une faible possibilité d'erreurs d'un manque d'une place significative pour mettre des gestionnaires d'erreurs écrivent les gestionnaires d'erreurs où le test prouve que vous avez besoin.

Dans les deux cas, si vous n'avez pas quelque chose d'utile à faire avec l'erreur envisager de le laisser bouillonner (pas de gestionnaire)

pour la journalisation:

Si vous avez besoin d'une piste de vérification vous devez écrire la première exploitation forestière. Si vous laissez la bulle d'erreurs tout le chemin vers le haut, vous devez fournir une journalisation là aussi si le journal peut être capturé.

En dehors de ces cas, j'ajouter généralement que l'exploitation forestière dans les endroits où le test / utilisation prouve qu'il est nécessaire et je fais généralement une option pour configurer une fois que je suis hors fait avec elle.

Vous pouvez implémenter l'audit et la gestion des exceptions en tant que services. la journalisation d'audit niveau de l'application nécessite des données d'état sur chaque transaction commerciale. La capacité de surveiller une application dans un contexte commercial ou transactionnel nécessite une interface de surveillance au sein du service pour envoyer des messages détaillant l'état spécifique de la transaction à l'appel de service. Cela exige que chaque service pour envoyer un message d'état aux étapes critiques dans la transaction commerciale. Vous pouvez ensuite créer une visionneuse en temps réel aux messages d'état corrèlent (basé sur la sémantique du message - par exemple ID de transaction) avec les services dans l'application composite. Cela donne une vue de bout en bout de la transaction commerciale pour la gestion SLA, suivi des défauts et la détermination du problème.

Un service d'audit peut alors être mis en œuvre comme une machine d'état qui peut consommer et enregistrer les messages en fonction des critères définis dans sa configuration. Un gestionnaire d'exception générique peut également utiliser le service d'audit pour soutenir une vue centralisée des problèmes qui se produisent dans l'entreprise SOA - appui à la surveillance basée sur les exceptions. Toute condition devrait avoir lieu non pas dans la solution est instrumentée pour envoyer un message d'exception à la gestionnaire d'exceptions.

Ecrire quand vous en avez besoin, mais la conception de leur inclusion dès le départ.

En d'autres termes: faire si il y a un moyen de gérer cette capacité d'enregistrement, et ajoutez la fonctionnalité réelle Boulonnerie (quels messages il se connecte) plus tard que le besoin se fait sentir. Sur les captures ajouter exceptions près (et enfin si vous avez que) avant d'écrire le lancer. Cela aidera à garder d'oublier l'un et de vous sauver une itération ou au pire un bug / crash.

Licencié sous: CC-BY-SA avec attribution
scroll top