Utiliser les classes d'exceptions standard (std::exception)
Dans cette étape, vous allez apprendre à propos des classes d'exceptions standard en C++ et à utiliser la hiérarchie std::exception pour gérer différents types d'erreurs d'exécution. La bibliothèque standard C++ fournit un ensemble de classes d'exceptions prédéfinies qui couvrent diverses situations d'erreur.
Ouvrez le WebIDE et créez un nouveau fichier appelé standard_exceptions.cpp dans le répertoire ~/project :
touch ~/project/standard_exceptions.cpp
Ajoutez le code suivant à standard_exceptions.cpp :
#include <iostream>
#include <stdexcept>
#include <limits>
double divideNumbers(double numerator, double denominator) {
// Check for division by zero using std::runtime_error
if (denominator == 0) {
throw std::runtime_error("Division by zero is not allowed!");
}
return numerator / denominator;
}
void checkArrayIndex(int* arr, int size, int index) {
// Check for out-of-range access using std::out_of_range
if (index < 0 || index >= size) {
throw std::out_of_range("Array index is out of bounds!");
}
std::cout << "Value at index " << index << ": " << arr[index] << std::endl;
}
int main() {
try {
// Demonstrate division by zero exception
std::cout << "Attempting division:" << std::endl;
double result = divideNumbers(10, 0);
}
catch (const std::runtime_error& e) {
std::cout << "Runtime Error: " << e.what() << std::endl;
}
try {
// Demonstrate array index out of range exception
int numbers[] = {1, 2, 3, 4, 5};
int arraySize = 5;
std::cout << "\nAccessing array elements:" << std::endl;
checkArrayIndex(numbers, arraySize, 2); // Valid index
checkArrayIndex(numbers, arraySize, 10); // Invalid index
}
catch (const std::out_of_range& e) {
std::cout << "Out of Range Error: " << e.what() << std::endl;
}
return 0;
}
Explorons les classes d'exceptions standard :
-
std::exception :
- Classe de base pour toutes les exceptions standard
- Fournit une méthode virtuelle
what() pour obtenir la description de l'erreur
-
Classes d'exceptions dérivées courantes :
std::runtime_error : Pour les erreurs d'exécution qui ne peuvent être détectées qu'au cours de l'exécution du programme
std::out_of_range : Lorsqu'un index ou un itérateur est en dehors de la plage valide
- D'autres classes courantes incluent
std::logic_error, std::invalid_argument, etc.
Compilez et exécutez le programme :
g++ standard_exceptions.cpp -o standard_exceptions
./standard_exceptions
Exemple de sortie :
Attempting division:
Runtime Error: Division by zero is not allowed!
Accessing array elements:
Value at index 2: 3
Out of Range Error: Array index is out of bounds!
Points clés concernant les classes d'exceptions standard :
- Offrent une manière structurée de gérer différents types d'erreurs
- Chaque classe d'exception a un objectif spécifique
- La méthode
what() retourne un message d'erreur descriptif
- Aide à créer une gestion des erreurs plus robuste et informative