Moin,
noch ein zweites Beispiel (wieder C++): Bei einem Windows-Programm können verschiedene Laufzeitfehler auftreten, also z.B. von C++ oder von Windows. Diese APIs haben ihre eigenen Funktionen den Laufzeitfehler zu ermitteln und als Fehlertext auszugeben. Aber es sind beides Laufzeitfehler, also abgeleitete Klassen davon. Ich kann nun in den Konstruktoren der Fehlerklassen den Fehlertext ermitteln, während der Aufrufer nur den Laufzeitfehler fangen muss:
class CppError : public std::runtime_error {
public:
CppError()
: std::runtime_error(std::strerror(errno))
{
}
};
class WindowsError : public std::runtime_error {
public:
WindowsError()
: std::runtime_error(/* Funktion zur Ermittlung des Windowsfehlertexts */)
{
}
};
// Im Programm:
try {
funktionsAufruf(/* … */);
}
catch (std::runtime_error &re) {
// …
}
Viele Grüße
Robert