try - catch(...)
-
Hallo,
mit
try { /* Code (Verarbeitung) */ } catch(...) { /* Code (Fehlerbehandlung) */ }
lassen sich ja alle möglichen Fehler abfangen.
Kann ich da noch irgendwelche Informationen über den Fehler bekommen (z.B. Fehlercode oder -beschreibung, bzw. wo ist der Fehler aufgetreten)?
Danke,
Thomas
-
hm, nicht mir catch(...),
denn der fängt alles, aber da gibts ja kein objekt worauf du
zugriff hättest.bei catch(std::exception &e) siehts anders aus, hier kannst du
die errormessage mit e.what() erhalten.
Falls du noch Fehlernummern oder so brauchst, muss das die im catchblock
angegebene Klasse entsprechend liefern können...Devil
-
Nun, du könntest dir natürlich auch eine eingene Klasse schreiben die von std::exception erbt.
Dieser Klasse könntest du dann noch mehr bestimmte Daten mitgeben die für dich wichtig sind.
-
Danke für die Infos!
Ableiten bringt mir ja höchstens etwas, wenn ich selbst Exceptions werfen will.
Ich will aber nur sicherstellen, ALLE MÖGLICHEN FEHLER (also angefangen bei Speicherverletzungen) abzufangen. Das funktioniert mit catch(...), ich werd's mal mit der std::exception versuchen.
-
Kannst ja beides machen, erst mit std::exception und dann mit ... .
Dadurch filterst du die Standard konformen und nicht Standard konformen Fehlerwürfe.Devil
-
Das ist schon klar, dass ich mehrere Fehlerbehandlungen aneinanderreihen kann. Ich wollte nur (auch bei 'catch(...)') irgendeinen Hinweis bekommen, um welche Art von Fehler es sich handelt (wie z.B. von Windows ja auch ausgegeben wird: Speicherverletzung an Adresse ... beim Lesen/Schreiben usw.).
Aber das ist wohl nicht so ganz trivial, an diese Informationen zu kommen
-
Na unter Windows gibt's doch auch die CException aus der MFC.
try { } catch (CException e) { MessageBox("FEHLER", TranslateError(e.GIB_FEHLER()), MB_ICONEXCLAMTION); }
-
Cancale schrieb:
Aber das ist wohl nicht so ganz trivial, an diese Informationen zu kommen
doch