Heim >Backend-Entwicklung >C++ >Wie gehe ich mit Division-durch-Null-Fehlern in C richtig um?
Ausnahme „Dividieren durch Null“ abfangen
Beim Versuch, in C durch Null zu dividieren, löst der Compiler oder die Laufzeitumgebung nicht automatisch eine Ausnahme aus . Das Verhalten ist undefiniert, was bedeutet, dass es zu einer Ausnahme oder einem anderen unvorhersehbaren Ergebnis führen kann.
Im bereitgestellten Codeausschnitt:
int i = 0; cin >> i; try { i = 5/i; } catch (std::logic_error e) { cerr << e.what(); }
Der Code fängt beim Versuch einer Teilung keine Ausnahmen ab durch Null, da eine ganzzahlige Division durch Null in Standard-C nicht als Ausnahme betrachtet wird.
Um dies zu handhaben, müssen Sie manuell nach der Bedingung „Dividieren durch Null“ suchen und eine auslösen Ausnahme entsprechend. Der C-Standard definiert nicht explizit eine Ausnahme für die Division durch Null, daher können Sie eine Ausnahme auslösen wie:
Hier ist ein modifizierter Codeausschnitt, der das Auslösen einer Division durch Null-Ausnahme demonstriert:
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; }
In diesem Beispiel ist die Die intDivEx-Funktion prüft auf Division durch Null und löst bei Auftreten eine std::overflow_error-Ausnahme aus. Dadurch können Sie die Ausnahme in Ihrem Code behandeln.
Das obige ist der detaillierte Inhalt vonWie gehe ich mit Division-durch-Null-Fehlern in C richtig um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!