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 :

Générer une Exception type OutOfRange


Sujet :

C#

  1. #1
    Membre Expert
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 400
    Par défaut Générer une Exception type OutOfRange
    Salut les Charpiste;

    en c#, existe-il OutOfRange ou sans équivalence ou c'est à moi de la créer. Afin de comprendre ce que je veux faire voici mon code d'origine :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     // méthode
            public void Initialise(string Des, string Abb, double v_min, double v_max, double v_anal, string v_unite) {
                this.designation = Des;
                this.abbreviation = Abb;
                this.val_max = v_max;
                this.val_min = v_min;
                this.val_analyse = v_anal;
    	    // si y a erreur alors affichage d'un message (plutôt d'une exception que j'arrive pas à faire) 	
                if (v_anal < val_min || v_anal > val_max)
                {
                    Console.WriteLine("La valeur à analyser du paramètre " + Abb + " : Valeur (" + v_anal + ") est hors bornes");
                }
                this.unite = v_unite;
            }
    mais à la place de Console.WriteLine(...) j'aimerais avoir une exception du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    throw new Exception.OutOfRange(borneInf, borneSup, maValeur);
    et là j'avoue ne pas savoir comment faire.

  2. #2
    Membre éprouvé Avatar de Antho42
    Profil pro
    Inscrit en
    Février 2009
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2009
    Messages : 173
    Par défaut
    Même code, deux solutions différentes demandées ? Gni ?

    Sinon, il existe l'exception IndexOutOfRangeException mais bon... oublie cette piste je pense.

    Il pourrait être sympa que tu fasses ta propre exception, que tu la lances à ce moment la. Et lorsque tu appelles ton code tu fait un try~catch() de ton exception. Exemple:

    Ton exception:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
        public class MonException : ApplicationException
        {
            public MonException(string msg) : base(msg) { }
        }
    La lancer dans ta méthode à l'endroit voulu :
    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
    19
     
    public void MaMehtode()
    {
     // méthode
            public void Initialise(string Des, string Abb, double v_min, double v_max, double v_anal, string v_unite) {
                this.designation = Des;
                this.abbreviation = Abb;
                this.val_max = v_max;
                this.val_min = v_min;
                this.val_analyse = v_anal;
    	    // si y a erreur alors affichage d'un message (plutôt d'une exception que j'arrive pas à faire) 	
                if (v_anal < val_min || v_anal > val_max)
                {
                    Console.WriteLine("La valeur à analyser du paramètre " + Abb + " : Valeur (" + v_anal + ") est hors bornes");
                    throw new MonException("Hors bornes");
                }
                this.unite = v_unite;
            }
    }
    Et quand tu appelles ta méthode, tu fais un try~catch()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    try
    {
        MaMethode();
    }
    catch(MonException ex)
    {
        Console.WriteLine(ex.Message);
    }

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    ArgumentOutOfRangeException ?

  4. #4
    Membre Expert
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 400
    Par défaut
    La réponse de Antho42 me convient très bien sauf que je me demande si on peut utiliser ArgumentOutOfRangeException en personnalisant les bornes inf et sup sachant que je ne manipule pas des tableaux. si oui je suis preneur car m'évitant une classe exception de plus.

  5. #5
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par Just-Soft Voir le message
    La réponse de Antho42 me convient très bien sauf que je me demande si on peut utiliser ArgumentOutOfRangeException en personnalisant les bornes inf et sup sachant que je ne manipule pas des tableaux. si oui je suis preneur car m'évitant une classe exception de plus.
    En général, quand tu développe une application, tu définis tes propres classes d'exception correspondant à tes conditions d'erreur.

  6. #6
    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
    Citation Envoyé par tomlev Voir le message
    ArgumentOutOfRangeException ?
    Je suis d'accord, autant utiliser les exceptions du framework lorsque cela correspond bien

    D'autant plus que tu peux faire ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ArgumentOutOfRangeException ex = new ArgumentOutOfRangeException("v_anal");
    e.ActualValue = v_anal;
    e.Data.Add("BorneMini", val_min);
    e.Data.Add("BorneMaxi", val_max);
     
    throw ex;

  7. #7
    Membre Expert
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 400
    Par défaut
    Re;

    En fait c'est ce que je demandais, merci StormimOn

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

Discussions similaires

  1. Comment génèrer une exception
    Par marguerite99 dans le forum Débuter avec Java
    Réponses: 8
    Dernier message: 04/05/2008, 13h53
  2. Générer une exception
    Par rabbi_jaccob dans le forum C++Builder
    Réponses: 4
    Dernier message: 15/02/2008, 09h53
  3. Réponses: 0
    Dernier message: 21/08/2007, 21h08
  4. Réponses: 3
    Dernier message: 30/03/2007, 11h57
  5. Réponses: 1
    Dernier message: 27/03/2007, 09h50

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