Fehler, Ausnahmen etc.
-
Hey,
ich möchte bald mit meinem ersten grossen C++-Projekt anfangen, wobei ich vorher eine Frage habe. Wie kann ich die Ausnahmebehandlung bei einem grossen Projekt mit vielen Funktionen realisieren? Ich habe vorher immer meine Funktionen gehabt, int zurückgegeben, und dann, wenn RückgabeWert==0 OK, ==1 Funktion angehalten, ==-1 Fehler (Ursache wurde von der Funktion dann selbst in eine Log-Datei geschrieben). Mit C++-Exeptions wäre das natürlich sehr viel schöner, dann könnte ich den Rückgabe-Wert für andere Dinge nutzen und ich könnte den Fehler viel einfacher zurückverfolgen (Einfach der FehlerKlassenInstanz die aktuelle Quelltextposition hinzufügen und dann weiterwerfen bis zu main()-Funktion...). Doch ist das nicht sehr viel Schreibarbeit? sagen wir, ich habe meine Klasse CError, von der alle weiteren Errors wie CDirectXError, CMathError etc. abgleitet sind. Dann müsste ich hinter jede Funktionsdefinition throw(CError, std::exception) schreiben, und in jede Funktion
try { // Meine Funktion } catch(CError& Error) { Error.AddInfos(__FILE__,__LINE__) //... } //...was meiner Meinung nach sehr viel Aufwand ist
Naja, kann sein, dass ich auch einfach keine Ahnung habe und ich das ganze falsch verstanden habe. Ich weiß es nicht...
Danke für Antworten,
Unwissendes Etwas
-
int main() { try { // dein code } catch(.......) { // dein code } }
-

try { // Meine Funktion } catch(CError& Error) { // ... } catch(...) { // ... }So meinte ich das...
-
du sollst das in der main machen dann wird alles abgefangen von deinem programm
-
global. schrieb:
du sollst das in der main machen dann wird alles abgefangen von deinem programm
Was heißt das denn konkret? wenn ich nur das in meine main schreibe und hinter jede Funktionsdefinition throw(CError, std::exception), könnte ich aber nicht zwischendurch Informationen über die einzelnen Eltern-Funktionen hinzufügen, was ich aber doch möchte?!
-
Du solltest dir zuerst einmal überlegen welche Fehler bei dir auftreten können und wie du sie behandeln möchtest.
Mögliche Fragen:
- Sind prinzipiell hauptsächlich Fehler die der Anwender macht?
(An welchen Stellen treten sie auf, kann man sie nicht vorher abfangen,
so dass sie erst gar nicht auftreten....)
- Sind es Programm interne Fehler, die du abfangen musst?
(Lassen sich diese nicht durch einen anderen Programmaufbau vermeiden, ...)
- Wie soll dein Programm auf den Fehler reagieren?
(globales try/catch ist z.B. ne Fehlerbehandlung damit anfangen kann man
aber für gewöhnlich nix. Welche Informationen brauchst du bei der
Auswertung?)Erst wenn man abschätzen kann welche Fehler auftreten können lässt sich wirklich eine Aussage darüber treffen welche Technik für die Fehler-Behandlung geeignet ist.
-
Hauptsächliche Softwarefehler von DirectX, die an jeder Stelle auftreten können (Device-Lost z.B.) Infos wären echt gut, also, wie ich gesagt habe, immer eine Funktion zurückwerfen, die Funktion fügt weitere Informationen hinzu und wirft den Fehler dann wieder weiter, und das so bis zur main. OK?