begin process at 2012 02 12 00:40:07
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Linux

 > 

Autre

 > 

Exceptions...


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Exceptions...

lundi 10 décembre 2007 à 18:50:09 | Exceptions...

poiuytrez3

Membre Club
Bonjour,

Je suis en train d'apprendre les exceptions et j'ai une erreur, je ne comprends pas pourquoi.
Voici mon code:

// A simple exception-handling example that checks for
// divide-by-zero exceptions.
#include <iostream>
using namespace std;

#include <exception>
using std::exception;

// DivideByZeroException objects should be thrown by functions
// upon detecting division-by-zero exceptions
class DivideByZeroException : public exception {
    public:
          // constructor specifies default error message
         DivideByZeroException::DivideByZeroException() : exception( "attempted to divide by zero" ) {}
};  // end class

// perform division and throw DivideByZeroException object if
// divide-by-zero exception occurs
double quotient( int numerator, int denominator )
{
    if ( denominator == 0 )
        throw DivideByZeroException(); // terminate function
   return numerator / denominator;
}

int main()
{
       int number1;    // user-specified numerator
       int number2;    // user-specified denominator
       double result;  // result of division
       cout << "Enter two integers";
       // enable user to enter two integers to divide
       cin >> number1 >> number2;
   
    // try block contains code that might throw exception
           // and code that should not execute if an exception occurs
           try {
              result = quotient( number1, number2 );
              cout << "The quotient is: " << result << endl;
           }
           catch ( DivideByZeroException &divideByZeroException ) {
              cout << "Exception occurred: " <<
                  divideByZeroException.what() << endl;
           }

           cout << endl;
           return 0;  /
 }


Lorsque je compile, voici l'erreur que j'ai :
[serial@localhost exception2]$ g++ *.cpp -o exception2
main.cpp:14: error: extra qualification 'DivideByZeroException::' on member 'DivideByZeroException'
main.cpp: In constructor 'DivideByZeroException::DivideByZeroException()':
main.cpp:14: error: no matching function for call to 'std::exception::exception(const char [28])'
/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../../include/c++/4.1.2/exception:57: note: candidates are: std::exception::exception()
/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../../include/c++/4.1.2/exception:55: note:                 std::exception::exception(const std::exception&)



Merci de votre aide.



-----------------------------------------------------------------------------------
http://www.mesdevoirs.net -- Corrections de devoirs de mathématiques en ligne
mardi 11 décembre 2007 à 01:20:28 | Re : Exceptions...

luhtor

Juste un doute, mais il me semble que j'avais eu des pbs (sous VC 2005)  en mettant l'incolade sur la meme ligne que le "try", pareil pour le "catch".
Essai ca:
           try
           {
              result = quotient( number1, number2 );
              cout << "The quotient is: " << result << endl;
           }
catch ( DivideByZeroException &divideByZeroException )
          {
              cout << "Exception occurred: " <<
                  divideByZeroException.what() << endl;
           }

Enfin j'ai pas trop pris le temps de lire le post en entier, donc il se peut que ca ne change rien.
mardi 11 décembre 2007 à 18:10:29 | Re : Exceptions...

juju12

Dans ta classe pour déclarer ton constructeur n'écris pas DivideByZeroException::DivideByZeroException() mais simplement DivideByZeroException() .
La deuxième erreur devrait disparaître avec la première.
mardi 11 décembre 2007 à 19:00:23 | Re : Exceptions...

poiuytrez3

Membre Club
Merci,

mais je viens d'essayer, et ça me donne ça :

[serial@localhost exception2]$ g++ main.cpp -o exception2
main.cpp: In constructor 'DivideByZeroException::DivideByZeroException()':
main.cpp:15: error: no matching function for call to 'std::exception::exception(const char [28])'
/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../../include/c++/4.1.2/exception:57: note: candidates are: std::exception::exception()
/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../../include/c++/4.1.2/excep



-----------------------------------------------------------------------------------
http://www.mesdevoirs.net -- Corrections de devoirs de mathématiques en ligne
mercredi 12 décembre 2007 à 19:14:28 | Re : Exceptions...

rt15

Membre Club Administrateur CodeS-SourceS
Salut,

Déjà, ce n'est pas le sujet, mais attention à la division ! Avec ton code, il font une division entière, donc 1/2 = 0... (Vive le Delphi qui propose 2 opérateurs. Mais c'est encore moins le sujet !)

VC6 a compilé le code sans problème, la remarque de juju12 enlèvant un warning.

En effet, g++ n'est pas d'accord. On dirait que la classe exception de g++ ne propose pas de constructeur prenant une chaîne. Bah on peut s'en sortir autrement (Testé sur VC6 et g++) :
class DivideByZeroException : public exception {
public:
virtual const char* what() const throw()
{
return "Coucou, je suis une division par zéro";
}
}; // end class


3ème année en ecole d'ingé d'info cherche stage de 4 mois à partir du 01/04/08


Cette discussion est classée dans : int, exception, std, by, dividebyzeroexception


Répondre à ce message

Sujets en rapport avec ce message

gcc, prob de compilation [ par Metrox ] 'lut all, je tourne ss une debian (knoppix, pr etre precis), et j'essaie de compiler un truc tt bete, mais il me sort une erreur...que faire?!?CODE(es Utilisation de std::map avec le type void * [ par toast3r ] Bonjour, J'utilise un tableau associatif, map et j'ai un problème au niveau de la récuperation des valeurs, voici le code que j'ai actuellement : # Allocation statique ou dynamique [ par luhtor ] Bon alors, j'ai un exemple de programme. Mais je me pose la question de sa validité sachant que ce que vous allez voir. C'est correct dans certain lan pb dans la conversion d'in int en string!! [ par othland ] j'arrive pas à comprendre!quand je mets :///////////////////////////////////////std::ostringstream oss;oss mon_string = oss.str();//////////////////// Quel intérêt d'utiliser (un)signed short int en C++ ? [ par Pilotwings ] Bonjour, je voulais savoir à quoi consiste d'utiliser unsigned short int ( entier court non signé) et signed short int (entier court signé) ? Par exem problème de "cout" [ par infinity7780 ] Bonjour,J'ai acheté et j'ai lu plusieurs chose sur le C++.Mais comme je débute, je doit surement me trompé.Alors voici ma question. est-ce normal que Aide [ par Hellboy67 ] Voila j'ai un exo pour les cours de prog a faire dont le code source est le suivant:# include # include using std::cout;using std::cin;using std::end cycle hamiltonien en c++ [ par crapette1 ] Bonjour, Pour un prjet je dois réaliser un petit programme en c++ qui me renvoie un cycle hamiltonien à partir d'un graphe complet. Le seul problèm Différence entre déclarations d'objet [ par skeleton18 ] Salut à toutes et à tous, Je ne suis pas vraiment un débutant en C++, mais j'ai une question de débutant... J'ai défini une classe Test comme ceci


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,998 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales