Warum wird mit catch(...) nicht jede Exception abgefangen?
-
Hallo Forum,
im Konstruktor einer Klasse wird eine Exception (ein int mit Wert -1) geworfen wenn der übergebene Paramter aus dem Rahmen fällt. Dies ist der Code mit dem ich die Exception auffangen will:
try { oMyObj = new MyClass(10); } catch (...) { oMyObj=0; // Sehen ob der Debugger hier lang kommt. }Ich sehe wie der Debugger in den Try Block reingeht und wenn ich die New Anweisung ausführe bekomme ich die Fehlermeldung Unhandled Exception und dieses im Debug Fenster:
First-chance exception in ProjectX.exe (KERNEL32.DLL): 0xE06D7363: Microsoft C++ Exception.
First-chance exception in ProjectX.exe (MSVCRT.DLL): 0xC0000005: Access Violation.Wenn ich innerhalb des Konstruktors von MyClass debugge komme ich zur "throw -1" Anweisung... und kriege wieder die Unhandled Exception Meldung.
Wenn ich ein Beispielprojekt erstelle wo ein Konstruktor eine Exception wirft, wird diese in obiger catch Bedingung gefangen. Nur hier nicht... habt Ihr einen Tip für mich?
Vielen Dank
Martin
-
Hardwareexceptions werden nicht gefangen.
MfG

-
Wieso Hardware Exception?
Mein Konstruktor sieht mitlerweile so aus:MyClass::MyClass { throw -1; }Wenn ich ein Objekt MyClass erstelle wird die Exception nicht in catch(...) abgefangen.
-
Ich vermute es hängt mit dem Visual Studio zusammen:
http://www.c-plusplus.net/forum/viewtopic-var-t-is-190622.html