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 :

Implémentation de méthode


Sujet :

C#

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 25
    Par défaut Implémentation de méthode
    Bonjour,

    Je crée une interface web sur visual studio 2008.Je souhaite créer un grid view avec un formulaire d'insertion. Le code C# ressemble à ça :

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
            public int InsertUtil(     string COD_UTIL,
                                       string COD_CIVILITE,
                                       string NOM_UTIL,
                                      etc.....
     
                                      )
            {            
                int rowsAffected = 0;
                int? err = 0;
                string lib_err = "";
     
                try /* Je me connecte aux data set de mon site qui me permettent d'accéder aux tables de la bdd sur sql server */
                {
                    ListeUtilByCodeTableAdapter utilDB = new ListeUtilByCodeTableAdapter();
                    DSDroitTechnique.ListeUtilByCodeDataTable utilDT = utilDB.GetListeByCode(COD_UTIL, ref err, ref lib_err);
     
                    if (utilDT.Count != 0)
                    {
                        rowsAffected = -4;
                    }
                    else
                    {
                        utilDT = new DSDroitTechnique.ListeUtilByCodeDataTable();
                        DSDroitTechnique.ListeUtilByCodeRow UtilisateurRow = utilDT.NewListeUtilByCodeRow();
     
                        if (COD_UTIL==null)
                            UtilisateurRow["COD_UTIL"] = System.DBNull.Value;
                        else
                            UtilisateurRow["COD_UTIL"] = COD_UTIL;
     
                        if (NOM_UTIL==null)
                            UtilisateurRow["NOM_UTIL"] = System.DBNull.Value;
                        else
                            UtilisateurRow["NOM_UTIL"] = NOM_UTIL;
     
     
                        if (LIB_DROIT==null)
                            UtilisateurRow["LIB_DROIT"] = System.DBNull.Value;
                        else
                            UtilisateurRow["LIB_DROIT"] = LIB_DROIT;
                          .......................................
     
                        utilDT.AddListeUtilByCodeRow(UtilisateurRow);
     
                        rowsAffected = utilDB.Update(utilDT);
     
                    }
     
                    return rowsAffected;
     
                }
                catch (Exception ex)
                {
                    throw new System.NotImplementedException();
                }
            }

    J'utilise des ODS pour appeler des requêtes de la base de données. Je fais soigneusement toutes mes étapes pour la méthode d'insertion mais le problème c'est que lorsque j'exécute, le message d'erreur s'affiche :

    Line 243: catch (Exception ex)
    Line 244: {
    Line 245: throw new System.NotImplementedException();
    Line 246: }
    Line 247: }



    [NotImplementedException: The method or operation is not implemented.]
    AramisHabilitation_Metier.CUtilisateur.InsertUtil(.......)
    si quelqu'un peut m'éclairer de son savoir..................

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    92
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 92
    Par défaut
    Pour avoir un descriptif de la vraie erreur ne relance pas une exception dans ton catch :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    [...]
    } catch (Exception ex)
    {
        // throw new NotImplementedException();
        throw;
    }
    Ou regarde en mode debug, le contenu de la variable ex.

    PS : Utilise les balises [ code ] et [ /code ].

  3. #3
    Membre Expert Avatar de Er3van
    Homme Profil pro
    Architecte Logiciel
    Inscrit en
    Avril 2008
    Messages
    1 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte Logiciel
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 430
    Par défaut
    NotImplementedException sert pendant le développement, quand tu fais un prototype de méthode mais que tu ne développes pas le corps. En gros ça te permet de te rappeler (ça peut être pratique sur des applications n-tiers à plusieurs développeur) que la méthode, bien que définie, n'est pas développée.

    Donc ça n'a pas grand sens de lancer ce genre d'exception dans un catch.

    En gros, ton catch intercepte une exception, sans savoir laquelle.
    Essaye comme suggéré plus haut un simple "throw ex" pour connaitre la nature de l'exception, et donc la corriger plus facilement.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    92
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 92
    Par défaut
    En me documentant sur les exceptions ici, j'ai découvert que Microsoft préconise l'utilisation de throw seul pour relancer une exception. Pourtant, j'ai toujours utilisé throw ex et je n'ai jamais constaté une "perte/suppression" de la pile. Mais bon c'est ce qu'il conseille :
    [...]
    Utilisez de préférence une levée d'exception vide lorsque vous interceptez et levez à nouveau une exception. C'est le meilleur moyen de conserver la pile des appels d'exception.
    [...]
    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 void MethodWithBadCatch(Object anObject)
    {
        try
        {
            DoWork(anObject);
        }
        catch (ArgumentNullException e)
        {
           System.Diagnostics.Debug.Write(e.Message);
           // This is wrong.
           throw e;
           // Should be this:
           // throw;
        }
    }
    [...]

  5. #5
    Membre Expert Avatar de Er3van
    Homme Profil pro
    Architecte Logiciel
    Inscrit en
    Avril 2008
    Messages
    1 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte Logiciel
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 430
    Par défaut
    Cela ne doit arriver que dans des cas précis, c'est pour ça que c'est une "best practise" mais pas mandatory.

    Dans le doute suis le conseille de MS

Discussions similaires

  1. Implémentation des méthodes virtuelles en c++
    Par nosferatu dans le forum Langage
    Réponses: 3
    Dernier message: 24/03/2011, 14h37
  2. Comment implémenter les méthodes pour sauvegarder un fichier ?
    Par ti3um dans le forum Eclipse Platform
    Réponses: 1
    Dernier message: 10/04/2009, 16h13
  3. Réponses: 14
    Dernier message: 21/11/2008, 16h29
  4. Réponses: 4
    Dernier message: 09/10/2006, 19h41

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