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

Windows Forms Discussion :

sortie de Try-Catch


Sujet :

Windows Forms

  1. #1
    Membre régulier
    Profil pro
    Ingénieur de développement
    Inscrit en
    Avril 2005
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur de développement

    Informations forums :
    Inscription : Avril 2005
    Messages : 169
    Points : 96
    Points
    96
    Par défaut sortie de Try-Catch
    Bonjour à tous,

    Dans une méthode qui retourne un booléen, j'utilise du Try/Catch

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    private bool MaFonction()
    {
        try
        {
            ...
            if(...erreur....)
                return false;
     
            ...
            return true;
        }
        catch(Exception ex)
        {
            return false;
        }
    }
    Mais je me pose la question suivante :
    ma technique de sortie par "return" est-elle correcte (techniquement et éthiquement) ou il vaudraiat mieux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    private bool MaFonction()
    {
        bool blRetour = true;
     
        try
        {       
            ...
            blRetour = true;
        }
        catch(Exception ex)
        {
            blRetour = false;
        }
     
        return blRetour;
    }

    mais dans ce cas, comment gérer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    private bool MaFonction()
    {
        try
        {
            ...
            if(...erreur....)
                return false;
    
            ...
            return true;
        }
        catch(Exception ex)
        {
            return false;
        }
    }
    un bon vieux Goto qi nous envoie après le catch ??


    Merci de vos idées.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Tout d'abord, il me semble que ce post ne se trouve pas dans le bon sujet, je l'aurais mis plutôt dans "C#".

    A mon avis, d'une manière générale, s'il s'agit d'une petite fonction, la 1ère syntaxe ne pose pas de problème. En revanche, si tu as fait une fonction avec beaucoup de lignes, ce n'est pas trop recommandé pour la lisibilité. C'est la raison principale pour laquelle les profs ne voulaient surtout pas voir ça dans les programmes qu'on leur rendait dans les TPs etc. C'est donc plus une question de lisibilité et de maintenabilité que d'étique

    Cela dit, il y a une manière de travailler avec dotnet qui est assez répandue, notamment chez Microsoft : on fait des tests critiques au début d'une fonction, et si ces tests sont négatifs, on lance une exception.
    Le plus courant est le test d'une variable qu'on ne veut surtout pas voir null comme par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    int MaFonction(string variableQuiNeDoitPasEtreNull)
    {
       int unResultat=0;
       if (null==variableQuiNeDoitPasEtreNull)
           throw new ArgumentNullException("variableQuiNeDoitPasEtreNull");
     
       //Suite du code...
     
       return unResultat;
    }
    Tout dépend donc des conventions qu'il peut y avoir dans l'entreprise, de l'école, ou même du groupe qui travaille sur le projet...

  3. #3
    Membre averti Avatar de pascalCH
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Juillet 2006
    Messages
    187
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 187
    Points : 369
    Points
    369
    Par défaut Propre, lisible et efficace
    A mon sens, une bonne procédure à un point d'entrée et un point de sortie.
    Donc une structure try..catch avec une variable locale pour le résultat permet d'avoir une structure claire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
     public Boolean MaFonction(int unParametre)
     {
         Boolean result;
         try 
         {
            unParametre = 5 / unParametre;
            if (unParametre > 5)
                result = true;
             else
                result = false;
         }
         catch (Exception)
         {
             result = false;
         }
         return result;
    }
    La nature fait des choses extraordinaires, observons la et restons humble, on ne nous demande pas de refaire le monde mais juste de reproduire virtuellement des choses existantes ....

    et n'oubliez pas si vous aimez et quand vous avez la réponse

  4. #4
    Membre régulier
    Profil pro
    Ingénieur de développement
    Inscrit en
    Avril 2005
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur de développement

    Informations forums :
    Inscription : Avril 2005
    Messages : 169
    Points : 96
    Points
    96
    Par défaut
    Je trouve effectivement que c'est "mieux", avec 1 point d'entrée et 1 point de sortie. Donc pour les erreurs que je gère moi même, je lève une exception (que je créé moi même) qui me renvoie vers le bloc Catch de la fin.

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

Discussions similaires

  1. Builder n'accepte pas try/catch/__finally
    Par Rodrigue dans le forum C++Builder
    Réponses: 3
    Dernier message: 18/04/2005, 13h15
  2. __try __finally et try catch
    Par buzzz dans le forum C++
    Réponses: 6
    Dernier message: 19/02/2005, 15h31
  3. [debutant sous eclipse] surround with try catch
    Par Alwin dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 26/06/2004, 20h03
  4. [try-catch] relancer les instruction du bloc try
    Par nounou dans le forum Langage
    Réponses: 11
    Dernier message: 12/05/2004, 11h23
  5. Exception & Try..catch
    Par PurL dans le forum C++Builder
    Réponses: 2
    Dernier message: 11/12/2002, 15h35

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