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

SL & STL C++ Discussion :

Je ne parviens pas à catch ma std::exception !


Sujet :

SL & STL C++

  1. #1
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 77
    Points : 65
    Points
    65
    Par défaut Je ne parviens pas à catch ma std::exception !
    Bonjour à tous, je reprends un gros programme et veux lui apporter quelques modifications.

    Je commence par vouloir vérifier les arguments d'entrée du programme, car actuellement, si on ne passe rien sur la ligne de commande, ça fait tout planter (il y a direct un cout << argv[1] << endl; sans aucun test).

    Voici comment je lance mon exception :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    // Vérification des arguments d'entrée
    	if(nbparams < 2) {
    		cerr << "Impossible de créer ELSIE sans fichier en entrée" << endl;
    		throw(new std::exception("Erreur argument"));
    	}
    Voici comment je tente de l'attraper :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    try {
    		C_Client_elsie Client_elsie(argc,argv);
    	}
    	catch(const std::exception & e) {
    		cerr << "Exception attrapee : " << e.what() << endl;
    	}
    	catch(...) {
    		cerr << "Exception !" << endl;
    	}
    Mon problème, c'est que c'est toujours "Exception !" qui est affichée en sortie erreur, cela signifie qu'on entre dans le catch(...) mais pas dans le catch(const std::exception & e) comme je le souhaiterais (et l'imaginais).

    Quelqu'un peut-il m'expliquer comment cela est-il possible ?

    Merci

  2. #2
    Membre éclairé

    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    717
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 717
    Points : 858
    Points
    858
    Par défaut
    Normal, d'un coté tu lance un pointer d'exception (throw new ...), de l'autre tu essaye d'attraper une référence. Solution : enlève le new.

  3. #3
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 77
    Points : 65
    Points
    65
    Par défaut
    Merci, c'était en effet tout bête et j'ai manqué d'attention... !

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

Discussions similaires

  1. Imposer le catch d'une exception à la compilation
    Par kissscoool dans le forum C++
    Réponses: 3
    Dernier message: 18/04/2008, 09h18
  2. Une requête que je ne parviens pas à trier
    Par renaud26 dans le forum Requêtes
    Réponses: 16
    Dernier message: 02/04/2008, 20h49
  3. Réponses: 2
    Dernier message: 05/02/2007, 00h37
  4. Process inconnu que je ne parviens pas à killer
    Par HNT dans le forum Administration système
    Réponses: 5
    Dernier message: 06/07/2006, 16h55
  5. [Forms 6i] Update -> Pas de sortie en Exception
    Par macben dans le forum Oracle
    Réponses: 14
    Dernier message: 27/12/2005, 12h17

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