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 :

Probleme de gestion d'exception


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Linu6
    Profil pro
    Inscrit en
    Août 2007
    Messages
    227
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 227
    Par défaut Probleme de gestion d'exception
    voila j'ai un tout petit code que j'essaie de compiler sous devc++, mais n'y arrive pas.

    voici le code
    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
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    #include <cstdlib>
    #include <iostream>
    #include <ctype.h>
    #include <string.h>
    using namespace std;
     
     
    class Personne
    {
          public:
    class error {};
    class error_name : public error {};
    Personne();
    ~Personne();
    Personne(char*);
    void Modifier();
    void Afficher();
         protected:
    void edit_nom();
         private:
    char *nom;
    };
     
    Personne::Personne()
    {
     nom = new char[20];
     this->edit_nom(); 
    }
     
    Personne::~Personne()
    {
      delete[] nom;
    } 
     
    void Personne::Modifier()
    {    
     
        edit_nom();
    }
     
    void Personne::edit_nom()
    {
         char temp[20];
         cout << "saisir nom: ";
         cin >> temp;
         if(nom == NULL)
         {
                nom = new char[strlen(temp)+1];
         }
         strcpy(nom, temp);
    }
     
    void Personne::Afficher()
    {
         if(nom == NULL)
         { throw error_name; }
         cout << "nom: " << nom << endl;
    }
     
    int main()
    {
        try
        {
        Personne p1;
        p1.Afficher();
        }
        catch(Personne::error_name en)
        {
            cout << "exception error_name:" << endl;             
            Personne::p1.edit_name();
        }             
        system("PAUSE");
        return EXIT_SUCCESS;
    }
    et voici les erreurs.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     C:\Dev-Cpp\newdev9ex2\main.cpp In member function `void Personne::Afficher()': 
    56 C:\Dev-Cpp\newdev9ex2\main.cpp expected primary-expression before ';' token 
     C:\Dev-Cpp\newdev9ex2\main.cpp In function `int main()': 
    70 C:\Dev-Cpp\newdev9ex2\main.cpp `p1' is not a member of `Personne'
    Je n'arrive pas à trouver où est ce que le code pêche..

  2. #2
    Rédacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supaéro - Doctorant ONERA
    Inscrit en
    Juin 2006
    Messages
    2 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing Supaéro - Doctorant ONERA

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 307
    Par défaut
    Mon dieu c'est quoi ce code ? Bien qu'il ne soit pas le plus crade déjà vu, il est pas mal.

    Donc en vrac:
    les en-tête : une bonne partie sont pour le C++, tu peux les virer

    passe tes char* en std::string et évite toute les manipulations C-like qui ne sont plus du tout nécéssaire en C++ et qui entraine dans ton code des fuites de mémoire

    Puis p1 est déclaré dans le bloc try, sa porté s'arrete donc à l'accolade fermante.

    Et enfin, Personne::p1.edit_name(); c'est quoi ce binz ?
    Ca ne veut rien dire !

    PS: Dev C++ est mort, passe à C::B
    "Never use brute force in fighting an exponential." (Andrei Alexandrescu)

    Mes articles dont Conseils divers sur le C++
    Une très bonne doc sur le C++ (en) Why linux is better (fr)

  3. #3
    Membre éprouvé
    Avatar de NiamorH
    Inscrit en
    Juin 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 1 309
    Par défaut
    Tu as donc deux erreurs :

    Dans la fonction membre Personne::Afficher(), lorsque tu fais un throw, il faut donner un objet bien réél, or tu ne donnes que le nom d'une classe, error_name. Essaye :

    Dans le main, l'objet Personne p1 n'est disponible que dans le scope de ton try, dans le scope du catch, p1 est détruit et même plus définit. Essaye de remonter la définition de p1 avant le try, puisque, de toute manière, tu ne gères que l'exception lancée par Afficher().

    Et puis, chaque chose en son temps, connaitre un peu de C c'est pas mal, mais, essaye tout de même de te mettre au C++.

  4. #4
    Membre Expert Avatar de Astraya
    Homme Profil pro
    Consommateur de café
    Inscrit en
    Mai 2007
    Messages
    1 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Consommateur de café
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 048
    Par défaut
    Dans ta classe:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void Personne::edit_nom()
    Dans ton main
    Sa colle pas trop il est pas bilingue le compilateur!

Discussions similaires

  1. Probleme Gestion des exception v2000
    Par Badtothebone93 dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 21/04/2009, 13h35
  2. [PL/SQL] gestion des exceptions - probleme
    Par etoileDesNeiges dans le forum Administration
    Réponses: 6
    Dernier message: 11/01/2007, 17h13
  3. Probleme de gestion des exceptions
    Par uriotcea dans le forum C++Builder
    Réponses: 3
    Dernier message: 07/11/2006, 21h26
  4. Réponses: 3
    Dernier message: 03/05/2006, 10h19
  5. c: gestion des exceptions
    Par vince_lille dans le forum C
    Réponses: 7
    Dernier message: 05/06/2002, 14h11

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