49 votes

Exception de capture : diviser par zéro

Le code suivant n'intercepte pas d'exception lorsque j'essaie de diviser par 0. Dois-je lever une exception ou l'ordinateur en lance-t-il automatiquement une au moment de l'exécution ?

 int i = 0;

cin >> i;  // what if someone enters zero?

try {
    i = 5/i;
}
catch (std::logic_error e) {

    cerr << e.what();
}

1voto

Vadiklk Points 3414

Vous devriez vérifier si i = 0 et ne pas diviser ensuite.

(Facultativement, après l'avoir vérifié, vous pouvez lever une exception et la gérer plus tard).

Plus d'informations sur : http://www.cprogramming.com/tutorial/exceptions.html

1voto

yask Points 1313

Vous devez lever l'exception manuellement à l'aide du mot-clé throw

Exemple:

 #include <iostream>
using namespace std;

double division(int a, int b)
{
   if( b == 0 )
   {
      throw "Division by zero condition!";
   }
   return (a/b);
}

int main ()
{
   int x = 50;
   int y = 0;
   double z = 0;

   try {
     z = division(x, y);
     cout << z << endl;
   }catch (const char* msg) {
     cerr << msg << endl;
   }

   return 0;
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X