Heim >Backend-Entwicklung >C++ >Wie kann man in C ordnungsgemäß mit Division-durch-Null-Ausnahmen umgehen?

Wie kann man in C ordnungsgemäß mit Division-durch-Null-Ausnahmen umgehen?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2025-01-04 02:54:42727Durchsuche

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

Umgang mit der Divide-by-Zero-Ausnahme

Ganzzahlen in C haben keine native Ausnahmeunterstützung. Im bereitgestellten Codeausschnitt heißt es also:

int i = 0;

cin >> i;  // Input might be zero

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

    cerr << e.what();
}

Wenn die Eingabe Null ist, führt dies zu undefiniertem Verhalten, anstatt eine Ausnahme auszulösen. Um solche Szenarien zu bewältigen, müssen Sie die Prüfung durchführen und explizit eine Ausnahme auslösen.

Im folgenden Code behandeln wir Ausnahmen bei der Division durch Null mithilfe der intDivEx-Methode:

#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;
}

Dieser Code prüft vor der Ausführung der Operation, ob eine Division durch Null erfolgt. Wenn eine Ausnahme auftritt, wird eine Fehlermeldung ausgegeben. Andernfalls wird die Ausführung fortgesetzt.

Das obige ist der detaillierte Inhalt vonWie kann man in C ordnungsgemäß mit Division-durch-Null-Ausnahmen umgehen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn