Das folgende Code-Beispiel stammt aus dem Buch
Objektorientiertes Programmieren in C++
- Ein Tutorial für Ein- und Umsteiger
von Nicolai Josuttis, Addison-Wesley München, 2001
© Copyright Nicolai Josuttis 2001
#include <iostream> // Headerdatei für I/O
#include <string> // Headerdatei für Strings
#include <cstdlib> // Headerdatei für EXIT_FAILURE
#include <exception> // Headerdatei für Ausnahmen
void processException()
{
try {
throw; // zu behandelnde Ausnahme nochmal auslösen, damit sie
// hier ausgewertet werden kann
}
catch (const std::bad_alloc& e) {
// Spezielle Ausnahme: Speicherplatz alle
std::cerr << "Speicherplatz alle" << std::endl;
}
catch (const std::exception& e) {
// sonstige Standard-Ausnahmen
std::cerr << "Standard-Exception: " << e.what() << std::endl;
}
catch (...) {
// alle (bisher nicht behandelten) Ausnahmen
std::cerr << "unerwartete sonstige Ausnahme" << std::endl;
}
}
int main()
{
try {
// zwei Strings anlegen
std::string vorname("bjarne"); // kann std::bad_alloc auslösen
std::string nachname("stroustrup"); // kann std::bad_alloc auslösen
std::string name;
// Strings manipulieren
vorname.at(20) = 'B'; // löst std::out_of_range aus
nachname[30] = 'S'; // FEHLER: undefiniertes Verhalten
// Strings verketten
name = vorname + " " + nachname; // könnte std::bad_alloc auslösen
}
catch (...) {
// alle Ausnahmen in Hilfsfunktion behandeln
processException();
return EXIT_FAILURE; // main() mit Fehlerstatus beenden
}
std::cout << "OK, bisher ging alles gut" << std::endl;
}