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 :

Pb : Exception / déroutements / try, throw, catch


Sujet :

C++

  1. #1
    Candidat au Club
    Inscrit en
    Mars 2005
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 2
    Par défaut Pb : Exception / déroutements / try, throw, catch
    salut, j'ai un prob av mon code, je veux lancer une exception si une version entrée n'est pas numérique ou contient autre chose qu'un point (exemple : bon : 2.0.3 pas bon : 3,m). j'ai un fichier version.h version.cc et mon main :
    Dans le main :
    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
    #include <stdlib.h>
    #include <iostream>
    #include <string.h>
    #include "version.h"
     
    using namespace std;
     
    int main()
    {
    	string s1, s2;
    	cout << "Entrez les deux versions : " << endl;
    	cin >> s1 >> s2;
     
    	try
    	{
            Version v1(s1);
            Version v2(s2);
        }
        catch(string exception)
        {
            cout << "Erreur : " << exception << endl;
            system("PAUSE");
            return 0;
        }
    ...
    Dans le version.h :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    ...
    public :
        Version(string v)
        {
            for(int k = 0; k < v.length() ; k++)
    		if(v[k] != '.' && v[k] < 0 && v[k] > 9)
    		{
    			version="";
                            throw ("erreur");
                   }
        };
    ...
    L'erreur set toujours la même quoi que je fasse :
    v1 et v2 ne sont pas déclarés dans le main (selon le compilateur) !
    Merci de votre aide!

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Si "..." à la fin de ton code utilise v1 et v2 alors effectivement ils ne sont pas déclarés. Une déclaration est limitée au bloc d'accolades l'entourant, donc après le bloc de ton try, v1 et v2 n'existeront plus.

    Ca pose donc bien un problème pour gérer la construction d'objets, car je suppose que tu ne veux pas mettre tout ton main dans un gros try/catch. Il y avait eu une discution sur ce forum à propos de ça, vois si tu peux la retrouver avec la recherche avancée.

    PS : t'aurais pu nous fournir le message d'erreur exact et la ligne concernée...

  3. #3
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Tu as également une erreur dans ton test, qui devrait être

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (v[k] != '.' && v[k] < '0' && v[k] > '9')
    Ou encore

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (v[k] != '.' && !isdigit(v[k]))

    Et au passage pour gérer les exceptions regarde par ici :

    http://c.developpez.com/faq/cpp/?page=exceptions

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Août 2003
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 247
    Par défaut
    Autre remarque: on écrit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    try
    {
    	throw std::string( "Erreur" );
    }
    catch ( std::string& e )
    {
    	...
    }
    ou bien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    try
    {
    	throw "Erreur";
    }
    catch ( const char* e )
    {
    	...
    }

    Mais une exception const char* ne sera pas levée par std::string.

  5. #5
    Candidat au Club
    Inscrit en
    Mars 2005
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 2
    Par défaut
    Wé j'avais déjà été voir sur la faq, ms sa me semble trop compliké ^^
    Sinon merci, jvais essayer vos solutions, mais je ne retrouve pas le topic sur le try catch sur tout le main, dc je vais esasyer à l'arrache..

  6. #6
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Citation Envoyé par Bapt_from_Reims
    Sinon merci, jvais essayer vos solutions, mais je ne retrouve pas le topic sur le try catch sur tout le main, dc je vais esasyer à l'arrache..
    http://www.developpez.net/forums/viewtopic.php?t=220238
    http://www.developpez.net/forums/viewtopic.php?t=282041

Discussions similaires

  1. try {/* code */} catch (ex) { throw ex; }
    Par mioux dans le forum Débuter
    Réponses: 26
    Dernier message: 15/07/2011, 15h41
  2. try throw catch
    Par ETVigan dans le forum Langage
    Réponses: 3
    Dernier message: 20/05/2010, 15h31
  3. [PHP 5.3] try - throw - catch
    Par ETVigan dans le forum Langage
    Réponses: 2
    Dernier message: 18/05/2010, 19h43
  4. [PHP 5.3] Exception throw catch try
    Par éric1 dans le forum Langage
    Réponses: 6
    Dernier message: 05/08/2009, 11h43
  5. [POO] Exception et "try catch"
    Par XenoDeus dans le forum Langage
    Réponses: 6
    Dernier message: 04/02/2008, 09h31

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