Attraper l'exception Divide by Zero
Lorsque vous essayez de diviser par zéro en C, il n'est pas automatique pour le compilateur ou le runtime de lever une exception . Le comportement n'est pas défini, ce qui signifie qu'il pourrait entraîner une exception ou un autre résultat imprévisible.
Dans l'extrait de code fourni :
int i = 0; cin >> i; try { i = 5/i; } catch (std::logic_error e) { cerr << e.what(); }
Le code n'attrapera aucune exception lors d'une tentative de division par zéro car la division entière par zéro n'est pas considérée comme une exception dans la norme C.
Pour gérer cela, vous devez vérifier manuellement la condition de division par zéro et lancer une exception en conséquence. La norme C ne définit pas explicitement d'exception pour la division par zéro, vous pouvez donc choisir de lever une exception telle que :
Voici un extrait de code modifié qui montre le lancement d'une exception de division par zéro :
int intDivEx(int numerator, int denominator) { if (denominator == 0) throw std::overflow_error("Divide by zero exception"); return numerator / denominator; } try { i = intDivEx(5, 0); // Will throw an overflow_error exception } catch (std::overflow_error &e) { cerr << e.what() << endl; }
Dans ce Par exemple, la fonction intDivEx vérifie la division par zéro et renvoie une exception std::overflow_error si elle est rencontrée. Cela vous permet de gérer l'exception dans votre code.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!