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
Libérer: 2025-01-04 02:54:42
original
775 Les gens l'ont consulté

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();
}
Copier après la connexion

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;
}
Copier après la connexion

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal