IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

[C#] : Gestion des Exceptions


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé

    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 175
    Par défaut [C#] : Gestion des Exceptions
    Bonjour,

    mon application gère les Exceptions de la manière suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    try
    {
        ...
        ...
    }
    catch (Exception expt)
    {
        throw new Exception ("monMessage" + "\n" + expt.ToString();
    }
    finally { }
    Lorsque FxCop analyse le code il indique l'anomalie suivante

    User code should not create and raise exceptions of certain types that are reserved by the runtime or which are of a too general exception type. Exception types that are too general include Exception, SystemException, and ApplicationException. Exception types that are reserved by the runtime include ThreadAbortException, OutOfMemoryException, ExecutionEngineException, and IndexOutOfRangeException.
    FxCop m'indique de ne pas renvoyer des exceptions de type 'Exception' (car trop générales) et me conseille alors d'utiliser des exeptions plus spécifiques.

    Quel type d'exception puis-je utiliser dans mon cas ?

    Merci et bonne journée

  2. #2
    Rédacteur

    Avatar de Jérôme Lambert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2003
    Messages
    4 451
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 451
    Par défaut
    Tu devrais plutôt relancer ton exception au lieu d'en créer une nouvelle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    try
    {
    }
    catch(Exception exc)
    {
       throw exc;
    }

    Par contre, si tu fais ça pour personnaliser le message de ton exception, tu peux créer ta propre exception qui hérite de la classe Exception :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    class MonException : Exception
    {
         public MonException(String tonMessage)
                : base(tonMessage)
         { }
    }

  3. #3
    Membre habitué
    Inscrit en
    Décembre 2005
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 14
    Par défaut
    Citation Envoyé par Goldar
    Tu devrais plutôt relancer ton exception au lieu d'en créer une nouvelle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    try
    {
    }
    catch(Exception exc)
    {
       throw exc;
    }
    Ca sert a rien d'attraper une exception et de la relancer elle meme sans aucun traitement supplementaire. Enfin si, ca fait perdre du temps.

  4. #4
    Rédacteur

    Avatar de Jérôme Lambert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2003
    Messages
    4 451
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 451
    Par défaut
    Citation Envoyé par Amnesyc
    Ca sert a rien d'attraper une exception et de la relancer elle meme sans aucun traitement supplementaire. Enfin si, ca fait perdre du temps.
    Pourquoi est-ce possible alors ? de plus tu retrouves cette technique dans d'autres langages dont Java.
    Mais pour répondre plus précisément à ta question:
    - Ca te permet d'être conscient des exceptions possibles pour ta méthode;
    - De te forcer à faire un try catch (finally pour libérer les ressources si il le faut) et ne plus fermer les yeux.

  5. #5
    Rédacteur
    Avatar de dev01
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 451
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 451
    Par défaut
    Citation Envoyé par Goldar
    Pourquoi est-ce possible alors ? de plus tu retrouves cette technique dans d'autres langages dont Java.
    Mais pour répondre plus précisément à ta question:
    - Ca te permet d'être conscient des exceptions possibles pour ta méthode;
    - De te forcer à faire un try catch (finally pour libérer les ressources si il le faut) et ne plus fermer les yeux.
    ouais mais bon il n'as pas tord non plus. Si tu catch une exception juste pour la relancer ... ben ça sert à rien. Quant a Java la philosophie par rapport aux exception est totalement différente.

    Sinon pour répondre à la question : Ce que te dit FxCop c'est de créer tes propres exception si tu doit changer le message (par exemple ne pas remonter à l'utilisateur le message "Vous devez etre admin pour faire ça" et le remplacer par "Vous n'avez pas les droits pour faire ça"). maintenant si tu ne veux rien changer alors tu n'as rien à faire, ta gestion est bonne.

    Dans tout les cas il faut etre attentif a ce que raconte FxCop. C'est un très bon outil mais il faut l'utiliser avec reflexion .

  6. #6
    Membre éclairé
    Inscrit en
    Août 2006
    Messages
    381
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 381
    Par défaut
    Par contre, penses aussi à éviter les try/catch quand tu peux utiliser des if. C'est moins coûteux.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [ADOConnect] gestion des exception en tout temps
    Par portu dans le forum Bases de données
    Réponses: 1
    Dernier message: 20/04/2005, 19h01
  2. [ORACLE 9i] Gestion des exceptions
    Par sygale dans le forum SQL
    Réponses: 6
    Dernier message: 19/08/2004, 15h06
  3. Gestion des exception (EOleException)
    Par shurized dans le forum Bases de données
    Réponses: 5
    Dernier message: 30/06/2004, 17h25
  4. [XMLRAD] gestion des exceptions
    Par pram dans le forum XMLRAD
    Réponses: 2
    Dernier message: 28/01/2003, 17h48
  5. c: gestion des exceptions
    Par vince_lille dans le forum C
    Réponses: 7
    Dernier message: 05/06/2002, 14h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo