Obwohl es Exceptions im C++ Standard schon etliche Jahre gibt, werden diese in größeren Projekten oft nicht eingesetzt. Im folgenden Artikel möchte ich das Für und Wider erörtern und mit gängigen Vorurteilen aufräumen.
try {
funktion();
...
} catch (const std::invalid_argument& e) {
std::cerr << "Falsches Argument:" << e.what() << std::endl;
} catch (const std::range_error& e) {
std::cerr << "Ungültiger Bereich:" << e.what() << std::endl;
} catch (...) {
std::cerr << "Sonstiger Fehler" << std::endl;
}
Gängige Vorurteile
- Die Behandlung von Ausnahmen ist codeintensiver (mehr Schreibarbeit)
Falsch. Ein sinnvolles try/catch braucht ist sogar weniger Code als ein sinnvolles if/else if/elsefür alle möglichen Fehlercodes. Fehlercodes werden aber oft nicht vollständig überprüft oder gar ganz weggelassen, was der Qualität des Codes nicht gerade zuträglich ist. Exceptions dagegen zwingen zu einer durchdachten Fehlerbehandlung. - Exceptions machen den Code langsam
Falsch. Wenn Exceptions richtig eingesetzt werden, sollten sie für Ausnahmen im Programmablauf verwendet werden. Die Ausführungsgeschwindigkeit des "Gut"-Pfades (in dem keine Ausnahmen geworfen werden) leidet nicht darunter. Wenn also die Exception die Ausnahme und nicht die Regel ist, hat man nichts zu befürchten. Weiterlesen