Diese Lektion behandelt die Techniken zur Erkennung und Behandlung von Fehlern in C++.
Fokus liegt auf Ausnahmen (exceptions) und bewährten Vorgehensweisen.
throw wird eine Ausnahme ausgelösttry wird Code markiert, der Fehler auslösen kanncatch wird die Ausnahme abgefangen und behandelttry {
int a = 10, b = 0;
if(b == 0) throw "Division durch Null!";
int c = a / b;
} catch(const char* msg) {
std::cerr << "Fehler: " << msg << std::endl;
}
<stdexcept>:
std::exception – Basisklasse aller Standard-Exceptionsstd::runtime_error – allgemeiner Laufzeitfehlerstd::logic_error – logische Fehlerstd::out_of_range – Index außerhalb gültiger Bereiche#include <iostream>
#include <stdexcept>
int main() {
try {
throw std::out_of_range("Index außerhalb");
} catch(const std::out_of_range& e) {
std::cerr << "Caught exception: " << e.what() << std::endl;
}
}
std::exception abgeleitet werden.
class MyError : public std::exception {
const char* what() const noexcept override {
return "Mein eigener Fehler!";
}
};
try {
throw MyError();
} catch(const MyError& e) {
std::cerr << e.what() << std::endl;
}
catch(const std::exception& e)try/catch so eng wie möglich halten#include <fstream>
std::ifstream file("data.txt");
if(!file) throw std::runtime_error("Datei nicht gefunden");
// file wird beim Verlassen des Scope automatisch geschlossen
try, throw, catch