C++-Standard-Fehlerklassen
Der C++-Standardheader <stdexcept> stellt die Basisklasse std::exception und zwei Kategorien von Exceptions bereit: logische Fehler und Laufzeitfehler. Die Basisklasse, um Logik-Fehlerklassen zu melden, ist std::logic_error, für Laufzeitfehler ist das std::runtime_error. Eine genauere Übersicht gibt es auf Websites wie cppreference.com oder cplusplus.com (beide englischsprachig).
std::exception
std::exception ist die Basisklasse für Ausnahmen. Die wichtigste (virtuelle) Methode ist what(), die ein C-Stil-String (einen Pointer auf ein char) zurück gibt und für die Fehlerdiagnose wichtig ist. Sonst hat diese Klasse eine minimale Schnittstelle: Neben dem Standardkonstruktor gibt es einen Copy-Konstruktor, einen virtuellen Destruktor und einen Zuweisungsoperator.
Laufzeit-Fehlerklassen
std::exception: Basisklasse für alle Exceptions
std::runtime_error: Basisklasse für Laufzeitfehler
std::range_error: signalisiert Bereichsfehler bei internen Berechnungenstd::overflow_error: signalisiert arithmetische Bereichsüberschreitungenstd::underflow_error: signalisiert arithmetische Bereichsunterschreitungenstd::system_errorab C++11, Standardheader<system_error>, signalisiert Fehler vom Betriebssystem oder anderen Low-Level-Anwendungen, hat zusätzlich eine Methodecode(), um an dasstd::system_error::code-Objekt zu gelangen:
Logik-Fehlerklassen
Es gibt eine Reihe von speziellen std::logic_error-Klassen. Diese werden bei Fehlern vor der Programmausführung geworfen.
std::exception: Basisklasse für alle Exceptions
std::logic_error: Basisklasse, um logische Fehler (Verletzung von Vorbedingungen, etc.)
std::domain_error: für Bereichsfehlerstd::invalid_argument: kennzeichnet ungültige Argumentestd::length_error: für Längenfehlerstd::out_of_range: wird geworfen, wenn ein Zugriff außerhalb eines gültigen Bereichs statt findet, z. B. beistd::vector:v.at(v.size() + 1);std::future_error: ab C++11, Standardheader<future>, signalisiert Zugriffsfehler aufstd::future-Objekte