trotz exception einer funktion weiterlaufen des programmes?
-
hallo
kurze verständnisfrage: kann ich (wie oben schon geschrieben) trotz einer exception, die auftritt, das programm weiterlaufen lassen? oder führen exceptions generell zum abbruch ( auch mit try, catch? )?
greetz
-
Exceptions führen im Allgemeinen nicht zum Abbruch (nur wenn du sie nicht fängst).
-
okay gut, dann ist das also nur die ide, die mich da informiert.
^^
-
IDE? Werd mal genauer.
-
nun, das problem ist jetzt gelöst. ich arbeite mit turbo c++ und hatte (beim debugging ) immer eine exceptionmeldung mit "fortsetzen, anhalten". wenn ich das programm aber ohne den "schutz" der ide startete stand nur mein exceptionhandling da.
apropos, gleich noch eine frage: kann ich irgendwie den inhalt der exception als fehlermeldung ausgeben?try { cout<< CreateConnectSocketEx("127.0.0.1", 80); } catch(exception& e) { cout<<"exception aufgetreten"<<endl; }kann ich da irgendwie auf die verschiedenen exceptiontypen reagieren ( ich habe eine funktion, die exceptions auf dem baustein von WSAGetLastError() aufbaut) ? oder kann das nur so allgemein gelöst werden?
greetz
-
Ich hoffe ich versteh deine Frage jetzt richtig
Also im catch( ) kannst du natürlich verschiedene Arten der Exceptions angeben und du kannst auch weitere catches haben um auf die einzelnen Exceptions unterschiedlich zu reagieren.
Und mit e.what() bekommst du den Text der Exception
-
[edit] habe in diesem fall ja nur mit der exception von der funktion zu tun..[/edit]
also könnte auch sowas gehen:
try {...} catch(exception& e) { if(e.what() == "der eine text") { cout<<e.what()<<endl; } else if(e.what() == "der andre text") { return 1; } else { return 2; } }muss ja eigentlich, oder?^^
PS: genau richtig verstanden

-
also der Vergleich, den du da machst, der geht nur, wen e.what() auch einen string (kein char*) liefert, weil da der Operator überladen ist. C-strings sind nur Pointer, bei denen ein Vergleich die Adresse Vergleicht aber nicht den Inhalt, und somit nicht das Gewünschte Ergebnis liefern.
Besser wären hier enums, die du dann in ein switch packen kannst. Für die Ausgabe würde ich den << Operator überladen, das ist übersichtlicher.