CException wird nicht geworfen??
-
Hallo,
hier mal ein Beispielcode:try { int a,b,c; a = 1; b=1; b--; c = a/b } catch(CException* e) { e->ReportError(); e->Delete(); } catch(...) { MessageBox("Ausnahme"); }
Warum wird hier jetzt nicht der Catch-Block mit der "CException" sondern der Allgemeine (...) aufgerufen??
Versteh ich irgendwie nicht.
-
Wird wohl kein Pointer auf die Exception geworfen. Probiers mal mit CException& (Referenz)
MfG SideWinder
-
Eine Division durch 0 ist keine CException.
Division durch 0 erzeugt eine SEH Exception!SEH Exceptions und C++ Exceptions unterscheiden sich gravierend! Siehe MSDN wie immer...
-
Hallo,
erstmal danke für die Antworten.
Ohne das ich jetzt die MSDN durchsuchen muss :-), gibt es auch die Möglichkeit diese Ausnahmen abzufangen bzw. wie krieg ich in meinem Catch(...) raus welche Exception ausgelöst wurde??Gruß
Ronnie
-
Dann fang hier an zu lesen:
http://msdn.microsoft.com/en-us/library/aa984821(VS.71).aspx
-
ronnie.b schrieb:
bzw. wie krieg ich in meinem Catch(...) raus welche Exception ausgelöst wurde??
Naja, das ist schwierig. Dazu müsstest du C++ lernen. *hihi*
Möglichkeit 1: mehrere catch() Handler schreiben für verschiedene Exception-Typen
Möglichkeit 2: RTTI (typeid/type_info)
-
ronnie.b schrieb:
gibt es auch die Möglichkeit diese Ausnahmen abzufangen ... ?
Es gibt die Möglichkeit fehlerfreien code zu schreiben - meine bevorzugte Methode.
-
FFC schrieb:
Es gibt die Möglichkeit fehlerfreien code zu schreiben - meine bevorzugte Methode.
Sehr kompetente Antwort.....
Irgendwie hab ich in diesem Forum immer das Gefühl, dass man hier mit Fragen allen auf die Nerven geht.@Martin + hustbaer:
Danke für die Antworten und den Link
-
ronnie.b schrieb:
FFC schrieb:
Es gibt die Möglichkeit fehlerfreien code zu schreiben - meine bevorzugte Methode.
Sehr kompetente Antwort.....
Irgendwie hab ich in diesem Forum immer das Gefühl, dass man hier mit Fragen allen auf die Nerven geht.Warum! Ich finde die Antwort ist vernünftig... Denn Deine Frage zielte ja auf SEH Exceptions. C++ Exceptions gehören sicherlich zum Design einer Software.
Wenn es um SEH Exceptions geht, wie zum Bespiel auch ungültige Speicherzugriffe etc. dann hat Dein Programm hier wirklich nichts zu machen. Warum auch?
Solche Fehler sind Programmiererfehler wenn Sie auftreten.
In solch einen Fall sollte Dein Programm crashen und netter Weise für den Entwickler einen Dump hinterlassen...
-
Hallo Martin,
das dies ein Programmiererfehler ist erscheint auch mir als Noob klar
War ja auch nur ein Beispiel und ich wollte ja einfach nur wissen was da passiert.
Auf eine Frage zu Antworten "Es gibt die Möglichkeit fehlerfreien code zu schreiben..." ist ja wohl nicht sehr kompetent. Selbs mir ist klar das es diese Möglichkeit gibt. Ich wage aber zu behaupten, dass es keinen fehlerfreien Code gibt wenn man mal "Hello World" außen vor lässt. Oder