Verwenden Sie Standard-Ausnahmeklassen (std::exception)
In diesem Schritt werden Sie über die Standard-Ausnahmeklassen in C++ lernen und wie Sie die std::exception-Hierarchie nutzen können, um verschiedene Arten von Laufzeitfehlern zu behandeln. Die C++-Standardbibliothek bietet eine Reihe von vordefinierten Ausnahmeklassen, die verschiedene Fehlerszenarien abdecken.
Öffnen Sie die WebIDE und erstellen Sie eine neue Datei namens standard_exceptions.cpp im Verzeichnis ~/project:
touch ~/project/standard_exceptions.cpp
Fügen Sie den folgenden Code in die Datei standard_exceptions.cpp ein:
#include <iostream>
#include <stdexcept>
#include <limits>
double divideNumbers(double numerator, double denominator) {
// Prüfen Sie auf Division durch Null mit std::runtime_error
if (denominator == 0) {
throw std::runtime_error("Division durch Null ist nicht erlaubt!");
}
return numerator / denominator;
}
void checkArrayIndex(int* arr, int size, int index) {
// Prüfen Sie auf Zugriff außerhalb des gültigen Bereichs mit std::out_of_range
if (index < 0 || index >= size) {
throw std::out_of_range("Array-Index ist außerhalb der Grenzen!");
}
std::cout << "Wert am Index " << index << ": " << arr[index] << std::endl;
}
int main() {
try {
// Demonstrieren Sie die Division-durch-Null-Ausnahme
std::cout << "Versuch einer Division:" << std::endl;
double result = divideNumbers(10, 0);
}
catch (const std::runtime_error& e) {
std::cout << "Laufzeitfehler: " << e.what() << std::endl;
}
try {
// Demonstrieren Sie die Array-Index-ausserhalb-des-Bereichs-Ausnahme
int numbers[] = {1, 2, 3, 4, 5};
int arraySize = 5;
std::cout << "\nZugriff auf Array-Elemente:" << std::endl;
checkArrayIndex(numbers, arraySize, 2); // Gültiger Index
checkArrayIndex(numbers, arraySize, 10); // Ungültiger Index
}
catch (const std::out_of_range& e) {
std::cout << "Index-ausserhalb-des-Bereichs-Fehler: " << e.what() << std::endl;
}
return 0;
}
Lassen Sie uns die Standard-Ausnahmeklassen untersuchen:
-
std::exception:
- Basisklasse für alle Standard-Ausnahmen
- Bietet eine virtuelle
what()-Methode, um die Fehlbeschreibung zu erhalten
-
Häufige abgeleitete Ausnahmeklassen:
std::runtime_error: Für Laufzeitfehler, die erst während der Programmausführung erkannt werden können
std::out_of_range: Wenn ein Index oder Iterator außerhalb des gültigen Bereichs liegt
- Andere häufige Klassen sind
std::logic_error, std::invalid_argument usw.
Kompilieren und führen Sie das Programm aus:
g++ standard_exceptions.cpp -o standard_exceptions
./standard_exceptions
Beispielausgabe:
Versuch einer Division:
Laufzeitfehler: Division durch Null ist nicht erlaubt!
Zugriff auf Array-Elemente:
Wert am Index 2: 3
Index-ausserhalb-des-Bereichs-Fehler: Array-Index ist außerhalb der Grenzen!
Wichtige Punkte zu den Standard-Ausnahmeklassen:
- Bieten eine strukturierte Möglichkeit, verschiedene Arten von Fehlern zu behandeln
- Jede Ausnahmeklasse hat einen bestimmten Zweck
- Die
what()-Methode gibt eine beschreibende Fehlermeldung zurück
- Hilft bei der Erstellung einer robusteren und informativeren Fehlerbehandlung