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 :

[C#] Problèmes d'exceptions


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 45
    Par défaut [C#] Problèmes d'exceptions
    Bonjour,
    Je réalise une application web avec C# sous Visual Studio et j'ai un problème avec les exceptions!
    En effet j'ai d'abord mis le code suivant sans "try" et "catch" et j'avais la NullReferenceException, j'ai alors tenté plusieurs choses avec les "try".
    Au final le mieux que j'arrive à faire c'est faire changer mon premier label mais pas les autres, sinon avec ce code j'ai une erreur avec cette 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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
                try
                {
                    int IdPersonne = int.Parse(Request.QueryString["NumeroPersonne"]);
     
                    String NumeroPersonne = personne.Lire(IdPersonne).NumeroPersonne;
                    LabelNumeroPersonne.Text = NumeroPersonne;
     
                    String NomPersonne = personne.Lire(IdPersonne).NomPersonne;
                    LabelNomPersonne.Text = NomPersonne;
     
                    String PrenomPersonne = personne.Lire(IdPersonne).PrenomPersonne;
                    LabelPrenomPersonne.Text = PrenomPersonne;
     
                    String CourrielPersonne = personne.Lire(IdPersonne).CourrielPersonne;
                    TextBoxCourrielPersonne.Text = CourrielPersonne;
     
                    int IdCarteAppel = personne.Lire(IdPersonne).IdCarteAppel;
                    String NumeroCarteAppel = carte.Lire(IdCarteAppel).NumeroCarteAppel;
                    LabelNumeroCarteAppel.Text = NumeroCarteAppel;
     
                    int IdCodeInter = personne.Lire(IdPersonne).IdCodeInter;
                    String NumeroCodeInter = code.Lire(IdCodeInter).NumeroCodeInterurbain;
                    LabelNumeroCodeInterurbain.Text = NumeroCodeInter;
                }
                catch
                {
                }

    Si vous pouvez m'aider à faire en sorte que tout mes labels se modifient avec plus aucune erreurs d’exceptions ce serait gentil.
    Merci.

    PS: tant que j'y suis comme je débute en C# je vous demande comment on fait une requête SQL sous Visual Studio 2010

  2. #2
    Membre éclairé Avatar de cs_ntd
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2006
    Messages
    598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 598
    Par défaut
    Salut,

    Tout d'abord, pourrais-tu éditer ton message, et utiliser la balise Code ?
    C'est le bouton avec un # dans l'editeur.

    La c'est franchement peu lisible...

    Ensuite, il faut que tu nous donne plus de détails : quel ligne renvoi l'execption ? Comment les objets ont il étés instanciés ? Quels sont leurs type ?

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 45
    Par défaut
    Désolé c'est mon premier message sur ce forum, voilà j'ai modifié =)

    En fait c'est assez complique il y a un paquet de classe pour faire ces objets mais en gros quand je fais personne.Lire(IdPersonne).donnees je lis dans ma base de données le nom, le prenom, ect... (je n'ai que des String dans ma BDD mise à part les ID)

    Le problème c'est que cela peut renvoyer une valeur null et donc provoque une exception et celle cette exception que je n'arrive pas à gérer.

    Par exemple pour mon LabelNomPersonne je souhaiterais lui affecter la valeur contenu dans personne.Lire(IdPersonne).NomPersonne si cette dernière existe sinon une chaîne vide.

    J'ai essayé de faire des vérifications avec des if si ces valeurs sont null, ou bien d'utiliser des "try" et "catch" (mais dans ce cas là dès au'une exception se produit la suite du code n'est pas lu).

    En fait chacune des lignes où j'ai personne.Lire(IdPersonne)... cela revoit une nullreferenceexception.

    Donc je cherche un moyen de modifier tous mes labels sans que cela pose de problèmes d'exceptions

  4. #4
    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
    Appelle ta méthode une seule fois déjà, car là tu fais plusieurs appels en base pour rien au final.

    Donc tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Personne personne = personne.Lire(IdPersonne);
    J'ai mis Personne comme type de retour, ne sachant pas ce que c'est en réalité mais ça doit être quelque chose dans ce gout je suppose ^^

    Ensuite tu testes si personne est null ou non, et tu adaptes en fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    if (personne != null)
    {
        LabelNumeroPersonne.Text = personne.NumeroPersonne;
        LabelNomPersonne.Text = personne.NomPersonne;
        ...
    }
    else
    {
        LabelNumeroPersonne.Text = null;
        LabelNomPersonne.Text = null;
        ...
    }
    Et ça devrait aller beaucoup mieux après.

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 45
    Par défaut
    Je tenté ce code là et à la première ligne, j'ai une erreur avec ArgumentNullException

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    int IdPersonne = int.Parse(Request.QueryString["NumeroPersonne"]);
     IPersonne pers = personne.Lire(IdPersonne);
     
    if (personne != null)
    {
         LabelNumeroPersonne.Text = pers.NumeroPersonne;
         LabelNomPersonne.Text = pers.NomPersonne;
    }
    else
    {
         LabelNumeroPersonne.Text = null;
          LabelNomPersonne.Text = null;
    }
    En faisant ceci je n'ai plus d'erreurs mais les labels n'ont pas changés
    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
                if (Request.QueryString["NumeroPersonne"] != null)
                {
                    int IdPersonne = int.Parse(Request.QueryString["NumeroPersonne"]);
                    IPersonne pers = personne.Lire(IdPersonne);
     
                    if (personne != null)
                    {
                        LabelNumeroPersonne.Text = pers.NumeroPersonne;
                        LabelNomPersonne.Text = pers.NomPersonne;
                    }
                    else
                    {
                        LabelNumeroPersonne.Text = null;
                        LabelNomPersonne.Text = null;
                    }
                }

  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
    Je tenté ce code là et à la première ligne, j'ai une erreur avec ArgumentNullException
    Même problème qu'au tout début. Si tu as une chance de récupérer un objet null tu dois le mettre de côté et tester ensuite pour savoir que faire. Ce qui est le cas avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Request.QueryString["NumeroPersonne"]

    Pour ton second code, exécute le mode debug, fait du pas à pas et regarde ce qu'il se passe (valeur des variables...). Car comme ça difficile de dire, sauf si dans ton code
    est une erreur de copier/coller de ta part, car la variable que tu déclares plus haut s'appelle pers et non personne.

    Si ça compile, ce qui semble être le cas, c'est peut être bien de là que vient le problème.

  7. #7
    Membre éclairé Avatar de cs_ntd
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2006
    Messages
    598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 598
    Par défaut
    EDIT: Grilled

    Alors, je soupsonne que la fonction Lire( ) renvoie un objet 'Personne' n'est-ce pas ?

    Ensuite tu dit toi-meme que ca peut renvoyer une valeur 'null'. Ce qui fait que quand tu fais personne.Lire(IdPersonne).QuelqueChose, tu essaye de lire 'QuelqueChose' sur un objet qui est peut-etre 'null'.

    Pour éviter ca, tu dois donc tester si personne.Lire(IdPersonne) est null, par exemple comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Personne p = personne.Lire(IdPersonne);
    if(p != null)
    {
        //fais ce que tu veux
    }
    else
    {
        //Message d'erreur
    }

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

Discussions similaires

  1. problème d'exception sur action MESSAGE
    Par lili2704 dans le forum Struts 1
    Réponses: 7
    Dernier message: 09/08/2007, 09h15
  2. probléme d'exception dans un formulaire
    Par minie dans le forum Struts 1
    Réponses: 2
    Dernier message: 05/06/2007, 11h11
  3. Problème d'exception MySql
    Par Derek80 dans le forum Visual C++
    Réponses: 1
    Dernier message: 12/04/2007, 22h39
  4. Problème Socket Exception
    Par Royd938 dans le forum Langage
    Réponses: 6
    Dernier message: 28/11/2006, 11h18
  5. [SimpleDateFormat] problème d'exception
    Par julienOriano dans le forum Collection et Stream
    Réponses: 8
    Dernier message: 12/07/2004, 17h01

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