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

Dotnet Discussion :

Choix du type d'Exception à lever


Sujet :

Dotnet

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Orne (Basse Normandie)

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 116
    Points : 100
    Points
    100
    Par défaut Choix du type d'Exception à lever
    Bonsoir,

    suite à la levée de CA2201 lors de la compilation de mon code, je me demande comment corriger le problème.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if (length2 < 0)
                {
                    throw new IndexOutOfRangeException();
                }
    string Value = keyAndValue.Substring(length + 1, length2).Trim();
    Le but est de remonter une exception si la longueur est nulle ou négative. Dans ce code, cette exception est réservée. Du coup, laquelle utiliser ?

    Merci,

    Vincent

  2. #2
    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
    Citation Envoyé par vduvernet Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if (length2 < 0)
                {
                    throw new IndexOutOfRangeException();
                }
    string Value = keyAndValue.Substring(length + 1, length2).Trim();
    bonjour,

    pourquoi ne pas utiliser une Exception "sur mesure" ? :

    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
        [Serializable]
        public class NullOrNegativeException : Exception
        {
            public NullOrNegativeException() { }
            public NullOrNegativeException(string message) : base(message) { }
            public NullOrNegativeException(string message, Exception inner) : base(message, inner) { }
            protected NullOrNegativeException(
              System.Runtime.Serialization.SerializationInfo info,
              System.Runtime.Serialization.StreamingContext context)
                : base(info, context) { }
        }
     
    if (length2 < 0)
                {
                    throw new NullOrNegativeException ();
                }
    string Value = keyAndValue.Substring(length + 1, length2).Trim();

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Orne (Basse Normandie)

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 116
    Points : 100
    Points
    100
    Par défaut
    je trouvais ça un peu violent. Et p-e aurais-je ré-inventé la roue

  4. #4
    Membre expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Points : 3 958
    Points
    3 958
    Par défaut
    Attention à l'overengineering !

    Il vaut mieux se payer un petit warning sans importance et conséquence (OK IndexOutOfRangeException n'est pas conçu pour ça à la base) que d'ajouter du code pour le contourner.
    Quitte à le faire taire en le désactivant localement via l'attribut SuppressMessage.

    Surtout que dans ce cas si length2 est un paramètre je pense que ArgumentOutOfRangeException ferait parfaitement l'affaire.

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

Discussions similaires

  1. [D7] connaître un type d'exception et la gérer
    Par _alex_ dans le forum Delphi
    Réponses: 3
    Dernier message: 29/08/2006, 13h41
  2. Mysql : choix des types pour les champs entre :
    Par Thierry8 dans le forum Administration
    Réponses: 3
    Dernier message: 14/06/2006, 08h22
  3. [architecture] Choix du type de pile
    Par Neitsa dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 29/11/2005, 10h04
  4. [STRUTS] Intercepter tout type d'exception.
    Par Hervé Saladin dans le forum Struts 1
    Réponses: 4
    Dernier message: 24/06/2005, 17h12
  5. choix des types
    Par cali dans le forum Langage SQL
    Réponses: 3
    Dernier message: 10/08/2004, 13h16

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