Maison >développement back-end >C++ >Comment gérer gracieusement les exceptions de division par zéro en C ?

Comment gérer gracieusement les exceptions de division par zéro en C ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-01-04 02:54:42720parcourir

How to Gracefully Handle Divide-by-Zero Exceptions in C  ?

Gestion de la division par zéro exception

Les entiers en C ne prennent pas en charge les exceptions natives. Ainsi, dans l'extrait de code fourni :

int i = 0;

cin >> i;  // Input might be zero

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

    cerr << e.what();
}

lorsque l'entrée est nulle, cela entraînera un comportement indéfini plutôt que de déclencher une exception. Pour gérer de tels scénarios, vous devez effectuer la vérification et lever une exception explicitement.

Dans le code suivant, nous gérons la division par zéro des exceptions à l'aide de la méthode intDivEx :

#include <iostream>
#include <stdexcept>

inline int intDivEx(int numerator, int denominator) {
    if (denominator == 0)
        throw std::overflow_error("Divide by zero exception");
    return numerator / denominator;
}

int main() {
    int i = 42;

    try {
        i = intDivEx(10, 0);
    } catch (std::overflow_error &e) {
        std::cout << e.what() << " -> ";
    }
    std::cout << i << std::endl;

    try {
        i = intDivEx(10, 2);
    } catch (std::overflow_error &e) {
        std::cout << e.what() << " -> ";
    }
    std::cout << i << std::endl;

    return 0;
}

Ce code vérifie la division par zéro avant d'effectuer l'opération. Si une exception se produit, il imprime un message d'erreur. Sinon, il continue l'exécution.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn