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 :

Gerer des mauvais parametre pour un constructeur


Sujet :

C#

  1. #1
    Membre éprouvé Avatar de Seth77
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2005
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 448
    Par défaut Gerer des mauvais parametre pour un constructeur
    Salut

    comment gere des mauvais parametre pour un constructeur?

    par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    class test
        {
            public test(int i)
            {
                if (i == 0)
                    // erreur
            }
        }

  2. #2
    Membre Expert
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Par défaut
    Avec des try/catch ?
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  3. #3
    Membre expérimenté
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Par défaut
    Rien ne t'empêche de lever une exception dans le constructeur. Maintenant certains n'aiment pas trop ce genre de choses, donc tu peux également passer par une méthode statique qui vérifie les paramètres avant d'instancier l'objet.

    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
    public class Test
    {
        private int _i;
     
        private Test(int i)
        {
            _i = i;
        }
     
        public static Test CreateTest(int i)
        {
            if (i == 0) { throw new ArgumentException("La valeur du paramètre i doit être différente de zéro."); }
            else { return new Test(i); }
        }
    }
    Au passage, puisque certains ne sont pas trop pour lever les exceptions dans un constructeur, on peut se poser les questions suivantes

    Peut-on lever une exception dans un constructeur ou est-ce déconseillé ?
    Si ce n'est pas vraiment déconseillé, y'a t'il des cas bien précis ou il faut tout de même l'éviter ?

    Quelqu'un à une expérience sur ce point ?

  4. #4
    Membre éprouvé Avatar de Seth77
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2005
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 448
    Par défaut
    Citation Envoyé par StormimOn Voir le message
    Rien ne t'empêche de lever une exception dans le constructeur. Maintenant certains n'aiment pas trop ce genre de choses, donc tu peux également passer par une méthode statique qui vérifie les paramètres avant d'instancier l'objet.

    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
    public class Test
    {
        private int _i;
     
        private Test(int i)
        {
            _i = i;
        }
     
        public static Test CreateTest(int i)
        {
            if (i == 0) { throw new ArgumentException("La valeur du paramètre i doit être différente de zéro."); }
            else { return new Test(i); }
        }
    }
    Au passage, puisque certains ne sont pas trop pour lever les exceptions dans un constructeur, on peut se poser les questions suivantes

    Peut-on lever une exception dans un constructeur ou est-ce déconseillé ?
    Si ce n'est pas vraiment déconseillé, y'a t'il des cas bien précis ou il faut tout de même l'éviter ?
    Merci ...

    pour ta question sur les exceptions, j ai eu l'exemple d exception leve sur un constructeur d'un objet de NHibernate

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

Discussions similaires

  1. Gestion des requêtes parametrées pour MySQL 5 sous VB6
    Par thomasarnelmadiso dans le forum VB 6 et antérieur
    Réponses: 0
    Dernier message: 25/01/2008, 11h55
  2. définir des parametres pour Adobe Distiller
    Par gratesnif dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 30/08/2007, 12h44
  3. Problème pour gérer des fenêtres
    Par pouette13 dans le forum Interfaces Graphiques
    Réponses: 2
    Dernier message: 26/07/2007, 12h27
  4. Réponses: 6
    Dernier message: 25/10/2006, 11h47
  5. Réponses: 5
    Dernier message: 17/08/2006, 10h10

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