Rechercher :
Les sujets | les Forums | Les blogs | Recherchez | Publiez | Creer un compte | Identification -  Bienvenue Invité
Menu
Accueil
Index des articles
Rubriques
Architecture
Persistance
UML
Bancs d'essais
VS.NET
AOP
Aspect DNG
PetShop DNG
PetShop SOA
PetShop AOP

English Translations

Livres en ligne

Mon Compte
Les Stats
Le Top 10
FAQ sur ce site
ChatGuru
Presse
Goodies
GuruBooks
Publier sur DNG
Auteurs
RSS DNG
Blogs.DNG
Publicité
Téléchargez
Mes messages
A Propos

Qui est en ligne ?
Il y a actuellement 50 invités et 0 membres en ligne.

Vous pouvez vous identifier ou vous inscrire ici.


Direct des forums

5 Forums les plus actifs
· Questions sur .NET, C#, ASP.NET (784/2642)
· Offres d'emploi (333/476)
· AspectDNG (68/293)
· Bavardages au sujet de DotNetGuru.org (55/242)
· UML (28/125)


5 Récents posts
· Technicien Informatique Support et Réseaux
0 Réponses
brainsonicrh
06 Juil 2010 à 10:46
· Concepteur-Développeur PHP Symfony
0 Réponses
brainsonicrh
28 Juin 2010 à 17:43
· Développeur C# C++ XML (h/f)
0 Réponses
PAC-Recrutement
16 Juin 2010 à 16:44
· [CDI ARRAS] Chef de Projet .NET
0 Réponses
Mattdef
15 Mar 2010 à 17:03
· [CDI IDF] Chef de projet Marketing/ Web
0 Réponses
brainsonicrh
06 Jan 2010 à 15:57


3 Membres les plus actifs
· tom
(245 Posts)
· Amethyste
(240 Posts)
· Jb
(117 Posts)


Total:
· Catégories: 1
· Forums: 6
· Sujets: 1291
· Messages: 3844

Un guide de bonnes pratiques pour gérer les erreurs en .NET
Transmis par: Sami actif Dimanche 27 Novembre 2005 à 22:44
Design Patterns .NET La gestion des erreurs ! On entend ce terme fréquemment, il est souvent accompagné d'autres mots tels que exception, code de retour, erreur, handler, etc. Sebastien Andreo se propose dans cette article de clarifier ce vocabulaire et de présenter certaines règles d'utilisation des mécanismes de gestion d'erreur de la plateforme .Net. Vous verrez aussi comment mettre en place une gestion d'erreur générique.

Gestion des erreurs sur la plateforme .NET Par Sébastien Andreo
 
Login

 



 


 Problème de connexion ?
 Nouvel utilisateur ? Enregistrez vous !
Liens connexes

· Plus à propos de Design Patterns .NET
· Info de Sami


La nouvelle la plus lue à propos de Design Patterns .NET:
[News] Le Design Pattern DTO de plus en plus contesté

Un guide de bonnes pratiques pour gérer les erreurs en .NET | Connexion/Créer un compte | 22 Commentaires
Les commentaires appartiennent à leur auteur. Nous ne sommes pas responsables de leur contenu.
Re: Un guide de bonnes pratiques pour gérer les erreurs en .NET
par Sebastien_Ros actif 28 Nov 2005 à 08:12

(Profil Utilisateur | Envoyer un message) http://www.evaluant.com
Merci Sébastien !
Ca n'a rien à voir mais est-ce que quelqu'un connait le rapport entre Sébastien Andréo, Laurent Kempé, Kader Yildirim, Jean-Baptiste Evain et moi même ? A part bien sûr les fautes d'orthographe ;)




[Aucun sujet]
par sebA actif 28 Nov 2005 à 09:36

(Profil Utilisateur | Envoyer un message)
Salut Seb,

Je crois savoir mais je laisse les autres chercher...

Seb





[Aucun sujet]
par puchiko actif 28 Nov 2005 à 13:55

(Profil Utilisateur | Envoyer un message)
Ce sont tous des garçons ?





[Aucun sujet]
par Sebastien_Ros actif 28 Nov 2005 à 15:12

(Profil Utilisateur | Envoyer un message) http://www.evaluant.com
Oui, mais ce n'est pas la bonne réponse ;)





[Aucun sujet]
par matthieugd (matt)
actif 28 Nov 2005 à 16:55
(Profil Utilisateur | Envoyer un message) http://spaces.msn.com/members/matthieu
Vous habitez tous dans l'est de la France, voir Mulhouse ?





[Aucun sujet]
par sebA actif 28 Nov 2005 à 17:24

(Profil Utilisateur | Envoyer un message)
Il y a un peu de ca, mais j"habite encore plus a l'est que mulhouse, de l"autre cote du rhin...

Aller un indice -> Mulhouse a qqchose a voir la dedans ..!





[Aucun sujet]
par Amethyste actif 28 Nov 2005 à 19:03

(Profil Utilisateur | Envoyer un message)
Vous travaillez ou avez travaillé chez Evaluant?

Amethyste





[Aucun sujet]
par sebA actif 28 Nov 2005 à 23:40

(Profil Utilisateur | Envoyer un message)
bon il est presque minuit alors .. la solution est : On était tous à l'ESSAIM enfin certains y sont encore ...

Seb




Re: Un guide de bonnes pratiques pour gérer les erreurs en .NET
par Anonyme actif 28 Nov 2005 à 11:07
Ci-joint une autre façon de gérer les Exceptions : Injection Of Dependency



[Aucun sujet]
par Sami actif 28 Nov 2005 à 22:26

(Profil Utilisateur | Envoyer un message) http://www.dotnetguru2.org/sami
Sérieusement, quand on arrive à un tel niveau de complexité avec l'injection de dépendances (encore que, pour moi, ComponentModel ne constitue pas vraiment un Framework IoC pour les raisons invoquées ici, l'AOP devient vraiment obligatoire...





[Aucun sujet]
par Anonyme actif 29 Nov 2005 à 18:29
Laisses tomber Sami, je suis sur le cul d'entendre ce genre de réponse de ta part.
Concernant AOP, ça me donne un air moqueur de l'entendre à chaque fois sur DNG parce que Personne ni même Tom n'est réellement capable de dire son exploitation dans la vie réelle, Production, Dév. . Ne me dites pas que c'est pour faire des Logs ou des Console.WriteLine, ...
J"aurai préféré entendre quelqu'un dire que AOP peut certainement induire la conception d'un Model, ... Tu m'entends Tom ? J'ai des cas intéressants qui s'appliquent dans le cadre de "dév." sur ce sujet. Ce qui me choquent de votre part à chaque fois que vous évoquez AOP, on a à chaque fois l'impression que l'utilisation de l'AOP se situe tjs à la fin d'un processe de dév. . Or, si on prend un peu de recul, on se rend compte, tisser, tisser, n'apporte rien si on ne peut pas débugger. Et surtout que ça n'a pas de sens de faire que dans l'intégration . Et du coup, on se pose la question, à qui réellement est réservé l'AOP ?
J'adhère la notion AOP mais à la manière que vous l'entendez.

Léon Andrianarivony





[Aucun sujet]
par Sami actif 29 Nov 2005 à 21:51

(Profil Utilisateur | Envoyer un message) http://www.dotnetguru2.org/sami
Tiens tiens, Monsieur Anonymous est en fait Léon..
On m'avait dit que tu t'étais assagi, que tu avais grandi mais je m'aperçois au contraire que tu n'as pas changé. De toute façon il n'y a que toi pour nous pondre une telle usine à gaz. Personnellement je n'ai jamais compris un seul de tes commentaires, souvent plus proches d'aternoiements de schizophrène que de vraies ploblématiques techniques. Tu mélanges tout allégrement, ici en l'occurrence debug, model, process de dev, intégration (des sujets qui ne se situent pas sur le même plan)....
Bref, désolé, mais je te connais trop pour savoir qu'il n'existe point de débat avec toi. Alors je m'abstiens et passe mon tour.





[Aucun sujet]
par tom actif 29 Nov 2005 à 22:57

(Profil Utilisateur | Envoyer un message)
Bon, je vais tenter de répondre point par point même si je trouve le commentaire mal placé: on parlait de gestion d'erreurs et tu embrayes spécifiquement sur l'AOP. Mais allons-y tout de même, comme si on était dans le forum AOP.

"Personne ni même Tom n'est réellement capable de dire son exploitation dans la vie réelle..."
Ben, je n'ai pas la science infuse, je ne revendique pas d'être le seul, le premier ni le meilleur à faire de l'AOP. Heureusement, il me reste beaucoup à apprendre. Comme tous les autres, j'essaie simplement d'apporter ma contribution à l'avancée du débat et de la recherche dans ce domaine. Un petit bouquin écrit voici un an et quelques mois, un tisseur d'aspects .NET qui prend tournure même s'il n'est pas du niveau "production" (malheureusement pour nous tous, il n'y en a aucun de ce niveau, et Microsoft n'est pas prêt de se mettre officiellement à l'AOP même si d'excellentes personnes ont les compétences requises chez l'éditeur), puis le PetShopAOP en début d'année. Voilà mon humble contribution.

Comment l'AOP est exploité dans la vie réelle? Que faut-il que je vous raconte?
- qu'on l'utilise pour détecter les fuites mémoires dans les applications Objet (Java ou .NET)
- que l'AOP bien sûr automatise les traces génériques
- que l'on peut concevoir des applications multi-couches avec inversion de dépendance aussi par l'AOP
- que l'AOP générique permet mieux que l'AOP classique d'implémenter certains design patterns dont le visiteur fortement typé sans introspection
- que certains chercheurs rapprochent l'AOP du recueil du besoin (cas d'utilisation) ou des finalités (goals) mais que le lien avec l'implémentation n'est pas encore très clair
- que certains systèmes d'exploitation (en C) gèrent la pagination mémoire par un aspect
- ... on pourrait en faire un bouquin ;-)


"...l'AOP se situe tjs à la fin d'un processe de dév..."
Etrange, pour ne reprendre que l'exemple du PetShop AOP, tous les éléments d'infrastructure technique sont tissés : distribution, gestion des ressources concernant la persistance, statistiques, traces, optimisations... Je n'ai pas vraiment l'impression que cela soit un détail ajouté en fin de développement, au contraire la conception détaillée (où se rejoignent la conception métier et le lien avec les frameworks techniques) se fait par tissage d'aspects. On est loin de la fin du dev.

"...tisser, n'apporte rien si on ne peut pas débugger..."
C'est marrant, j'ai fait très récemment un sondage chez des personnes d'horizons différents. Environ 20% des gens utilisent un débugger dans ceux que j'ai sondés. Les autres n'en éprouvent pas le besoin. Ils font pourtant du code de qualité, comme les 20% qui débuggent.
Donc c'est un débat intéressant, mais qu'il faudrait reprendre à part: débugger est-il utile, dans quel cas, pour qui, pour quelle partie d'application?
Après, concernant le tissage .NET et le débuggage, je botte en touche (on a déjà eu ce débat avec Bertrand): le format des fichiers PDB n'est pas normalisé / publié à l'ECMA (c'est d'ailleurs très dommage). Donc les tisseurs statiques .NET auront beaucoup de mal à générer les variables symboliques de débogage. Et, autre débat, comme je considère que le tissage dynamique via les dynamic proxies ne sont qu'un ersatz d'AOP (je ne parle pas du tissage au JIT qui est aussi puissant que le statique, seul son moment d'exécution est déporté), ce sera difficile. Mais pas impossible...

"J'adhère la notion AOP mais à la manière que vous l'entendez."
Bah, tant mieux: puisqu'il s'agit d'un domaine de recherche, où tout n'est pas vraiment déffriché (il reste à inventer une véritable modélisation orientée aspects, des outils pour le traduire en programmation orientée aspects, il nous faudra un certain nombre de patterns et d'anti-patterns, et enfin que les outils et les Hommes s'améliorent dans ce domaine). Donc plus nous aurons de points de vue, de débats, d'outils

Lire la suite du commentaire...





[Aucun sujet]
par And.Leo actif 30 Nov 2005 à 08:48

(Profil Utilisateur | Envoyer un message)
Si à chaque fois que je fais un commentaire, et qu'on juge que c'est mal placé, merci !
Mon lien ciblé le sujet de la gestion d'Exception en question. Je n'étais pas là à promouvoir que le ComponentModel sait faire de IOC.
Si à chaque fois que nous lisons un article de fond, on doit tous les prendre au premier degré, ... désolé, cela ne fait pas partie de ma culture.
Cet article soulevait la problèmatique du Try Catch et on sait tous à quel point la remontée d'exception est couteuse, qu'elle aborde une autre façon de gérer les Exceptions métiers ayant un couplable faible par le biais d'un ComponentModel.
Bref, comme tu dis Sami, je n'ai pas changé et réciproquement. Ton ego est tellement fort qu'il est difficile pour toi de penser instant que parfois tu fais des erreurs. C'est humain et on le fait tous.
Désolé si mes commentaires sont en anonyme, je n'y peux rien si c'est votre site qui fait ça. Si je ne me suis pas connecté, je ne pourrai pas écrire ces posts et du moins signé "Léon Andrianarivony" en clair.

Tom : Envois moi juste un mail sur and.leo@laposte.net et je te fais un forward avec plaisir de ceux que je souhaite faire avec l'AOP. Du moins, l'exploiter à des fins subtiles.

Léon Andrianarivony





[Aucun sujet]
par Sami actif 30 Nov 2005 à 09:55

(Profil Utilisateur | Envoyer un message) http://www.dotnetguru2.org/sami
Ton ego est tellement fort qu'il est difficile pour toi de penser instant que parfois tu fais des erreurs. C'est humain et on le fait tous.

Je vais te rassurer alors, des erreurs j'en fais tous les jours. La preuve j'ai répondu sincèrement (comme on le fait souvent sur DNG) à ton commentaire sans savoir que c'était toi. Et j'aurais mieux fait de m'abstenir :-).

Je te fais un forward avec plaisir de ceux que je souhaite faire avec l'AOP. Du moins, l'exploiter à des fins subtiles.

Il fallait oser.

Merci Léo....





[Aucun sujet]
par fabrice actif 29 Nov 2005 à 23:23

(Profil Utilisateur | Envoyer un message) http://weblogs.asp.net/fmarguerie/
public abstract class ContextedContainer : Container, IContextedContainer
where T : IContainer
where C : IComponent
where X : ContainerContext, new()
where S : ISite, new()
where K : new()
...

Clair comme de l'eau de roche.
no comment




Re: Un guide de bonnes pratiques pour gérer les erreurs en .NET
par fabrice actif 28 Nov 2005 à 13:10

(Profil Utilisateur | Envoyer un message) http://weblogs.asp.net/fmarguerie/
Je pense que ce genre d'article est très important car il rappelle ou attire l'attention sur des pratiques que les développeurs ont tendance à négliger.

Deux remarques minimes :
- il est important d'utiliser le construteur avec le paramètre "inner" qui permet de conserver trace de l'exception d'origine, ce qui pourra alors être renseigné dans un fichier de log et permettra de mieux comprendre la cause d'exceptions inattendues.
- Le code suivant :

FileStream stream = null;
try{
stream = new FileStream(...);
}
finally{
if(steam!=null)stream.Close();
}

peut être écrit plus simplement comme suit

FileStream stream = new FileStream(...);
try
{
...
}
finally
{
stream.Close();
}

car on ne protège une ressource que si elle a été allouée. Ici, on ne peut à l'évidence fermer le FileStream que s'il a été créé et qu'après l'opération d'affectation à la variable "stream".



[Aucun sujet]
par bleroy (bleroyatmicrosoftpointcom)
actif 28 Nov 2005 à 21:03
(Profil Utilisateur | Envoyer un message) http://weblogs.asp.net/bleroy
Ou alors:

using(FileStream stream = new FileStream(...)) {
...
}




Re: Un guide de bonnes pratiques pour gérer les erreurs en .NET
par Amethyste actif 28 Nov 2005 à 19:01

(Profil Utilisateur | Envoyer un message)
Article très intéressant.

Juste 1 remarque:

Lorsque tu dis une erreur doit dériver de System.Exception, pas tout à fait. MS recommande plutôt System.ApplicationException afin de pouvoir éventuellement distinguer les erreurs du framework des erreurs applicatives.


Ca peut être intéressant justement si on fait des log.




[Aucun sujet]
par sebA actif 28 Nov 2005 à 23:37

(Profil Utilisateur | Envoyer un message)
oui tu as raison c'est plutot ApplicationException mais je m'etais un peu couvert en ecrivant "Toujours se dériver de System.Exception ou d'une des autres exceptions de base..." :-)





[Aucun sujet]
par fabrice actif 29 Nov 2005 à 00:36

(Profil Utilisateur | Envoyer un message) http://weblogs.asp.net/fmarguerie/
Ca c'est l'idée originale, mais depuis Microsoft semble avoir changé d'avis, comme on peut le voir ici.
Mais je n'ai pas bien compris pourquoi...




Re: Un guide de bonnes pratiques pour gérer les erreurs en .NET
par smacchia_patrick actif 28 Nov 2005 à 20:41

(Profil Utilisateur | Envoyer un message)
Effectivement trés bon article. Cette mouvance de guidelines do/consider/avoid/don't avec des conseils concis me parait bénéfique pour la communauté.

Allez hop, un ptit extrait de Pratique2 sur le sujet:

(...)Le principe de base est qu’une application qui fonctionne en mode normal ne devrait pas lancer d’exception. Cela repousse le problème sur la définition des situations anormales. Il y en a de trois types :
  • Celles qui surviennent à cause d’un problème d’environnement d’exécution et qui peuvent être réglées par une modification de cet environnement (absence d’un fichier de configuration, mauvais mot de passe, réseau indisponible, permissions restreintes etc). On parle d’exception applicative.

  • Celles qui surviennent à cause d’un problème d’environnement d’exécution qui ne peut être résolu. Par exemple, les applications gourmandes en mémoire telles que SQL Server 2005 peuvent être limitées par les 2 ou 3Go d’espace utilisateur d’un processus Windows 32 bits. On parle d’exception asynchrone du fait qu’une telle exception ne dépend pas de la sémantique de la portion de code qui l’a levé.

  • Celles qui surviennent à cause d’un bug et qui ne peuvent être réglées que par une nouvelle version corrigeant ce bug.
  • (...)


     
    DotNetGuru.org TM, une marque de DNG Consulting
     
    Powered by the AutoTheme HTML Theme System