Kann es sein, dass C++-
Exception-Handling totaler Müll ist, weil es noch nicht einmal Vererbung bei der Catch-Klausel erkennt? Naiv, wissend wie das
Exception-Handling bei Java funktioniert, versuche ich mich an C++ und definiere mir zunächst eine
Exception-Klasse. Davon leite ich ein paar spezielle Exceptions ab. Die speziellen Exceptions setzen alle u.a. einen String in der Klasse, eine Get-Methode für den String ist in der
Exception-Basisklasse definiert.
Nun will ich alle Exceptions abfangen, so wie ich es von Delphi oder auch Java her kenne:
Code:
try {
//irgendein throw
}
catch (
Exception& e) {
printf(e.report());
}
Doch was muss ich sehen? Wird wirklich eine
Exception von Typ
Exception ausgelöst, klappt es, wird aber eine von einem von
Exception abgeleiteten Typ ausgelöst, greift sie nicht. Und alle abgeleieten Typen zu überprüfen, kann es ja nicht sein.
Ich dachte immer, eines der Grundprinzipien der
OOP wäre, dass ein Objekt B, das von einer Klasse A erbt, ebenfalls ein Objekt der Klasse A ist.
Doch entweder bin ich zu doof für C++ und hab etwas nicht richtuig kapiert oder C++ setzt diese Richtline nicht korrekt um.
Wenn zweiteres zutrifft, so frag ich mich, wie um alles in der Welt man in C++ ordentlich objektoriniert programmiert, da Fehlerbehandlung ja ein nicht unwesentlicher Teil davon ist und ein
Exception-Handling dieser Art meiner Meinung nach wenig brauchbar ist.