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 de Gestion d'exception


Sujet :

C++

  1. #1
    Membre confirmé
    Inscrit en
    Septembre 2006
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 94
    Par défaut PB de Gestion d'exception
    Salut tout le monde,
    En fait j'essaye d'apprendre un peu la gestion des exception en C++.
    J'ai mis mon pb sous forme d'un simple exple
    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
     
    #include <string>
    #include <iostream>
    using namespace std;
    int main()
    {
    		int s;bool test=true;
    		do
    		{
    			cout<<"\nTape an integer :"; 
    				try
    				{ 
     
    						cin>>s;
    						throw string("Taper un entier SVP\n");
     
    				}
    				catch(const string& chaine){cout<<"ERREUR : "<<chaine<< std::endl; test=false;}
     
    		}
    		while(!test);
    		if(test){cout<<"ok";}
    }
    L'exécution de ce bout de code fait une boucle infini.
    Quelqu'un peut me le corriger SVP.
    Merci.

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    780
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 780
    Par défaut
    Mais tu l'as peut être mis exprès pour tester

    Si tu n'as plus la main c'est à cause de ce problème :

    http://cpp.developpez.com/faq/cpp/?p...#SL_cin_verify

    Si vous testez cet exemple en entrant un mot au lieu d'un nombre le programme entrera dans une boucle infinie affichant Erreur de saisie.. En effet, après une erreur de saisie, le flux d'entrée cin se retrouve dans un état invalide, et la chaîne invalide qui a provoqué l'erreur est toujours dans le buffer puisque son extraction a échoué. Ainsi la tentative suivante échoue à nouveau, ce qui provoque une boucle infinie dans l'exemple précédent.
    Il faut donc supprimer la ligne invalide du buffer et restaurer l'objet cin dans un état valide. Ceci est fait grâce aux deux lignes suivantes :

    cin.clear(); // effacer les bits d'erreurs
    cin.ignore( numeric_limits<streamsize>::max(), '\n' ); // supprimer la ligne erronée dans le buffer

Discussions similaires

  1. [ORACLE 9i] Gestion des exceptions
    Par sygale dans le forum SQL
    Réponses: 6
    Dernier message: 19/08/2004, 15h06
  2. Gestion des exception (EOleException)
    Par shurized dans le forum Bases de données
    Réponses: 5
    Dernier message: 30/06/2004, 17h25
  3. [C#] Gestion d'exception
    Par ALCINA dans le forum Windows Forms
    Réponses: 4
    Dernier message: 18/05/2004, 12h18
  4. [XMLRAD] gestion des exceptions
    Par pram dans le forum XMLRAD
    Réponses: 2
    Dernier message: 28/01/2003, 17h48
  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