Methode beenden mit Exception
-
Kann man eine dazu Exception veranlassen, dass sie die Methode beendet, durch die sie ausgelöst wurde - und wenn ja, wie?
Ich habe es schon mit return versucht, aber das beendet dann immer nur den Exception-Konstruktor... und break beendet ja nur eine Schleife
-
Das Auslösen einer Exception beendet die Methode, da brauchst Du nichts weiter mehr tun.
Wenn Du das nicht hören wolltest stell eine verständlichere Frage
-
zeig doch mal deinen Code. Ich habe die Vermutung, du hast Exceptions noch nicht richtig verstanden.
-
der folgende Code steht in einer Methode des Hauptprogramms. text[] ist ein string-Array mit 20 Elementen:
try { for(int i=0; i<20; i++) { if(text[i].Contains('x')) throw new ChangingException(); text[i] = "ok"; ... } } catch (ChangingException) { Console.WriteLine("Eingabe ist nicht erlaubt"); return; } ... class ChangingException : Exception {}
Bei jedem enthaltenen x soll die laufende Methode abgebrochen werden und nach einigen Anweisungen ein rekursiver Neustart erfolgen, also wieder von i=0 an...
Oder darf man da gar keine Exception verwenden, sondern muss es mit einer return true-false Anweisung realisieren?
-
Exceptions zur Ablaufsteuerung zu missbrauchen, sollte unter Folterstrafe verboten werden.
throw new ChangingException();
Dies hier auch. Was macht das new da? Ist dir überhaupt klar, was das macht?
edit: Und bist du bei der richtigen Sprache?
text[] ist ein string-Array
Das klingt schon einmal komisch für C++, aber kann sein. Dann ist aber
text[i].Contains('x')
falsch undConsole.WriteLine
sieht mir auch nach etwas wie Java oder C# aus.edit2: Aus deinen bisherigen Beiträgen schließe ich mal, dass du vermutlich C# oder C++/CLI machst. Und ich habe dich schon mehrmals verschoben! Sag mir, was das ist, dann verschiebe ich dich noch ein letztes Mal und dann lern endlich, welche Sprache du benutzt!
-
An dieser Stelle würde ich das als groben Missbrauch von Exceptions ansehen.
Warum nicht so:
for(int i=0; i<20; i++) { if(text[i].Contains('x')) { Console.WriteLine("..."); return; } text[i] = "ok"; ... }
EDIT: Ähm, bist Du sicher dass du Dich nicht im Forum vertan hast, AngelaMerkel?
-
Ich bin eben noch neu in der Programmierung. Dann schmeiss mich am besten ganz raus. Aber noch einen Hinweis an den Moderator:
Wenn ich erst mal lernen soll, welche Sprache ich verwende, dann solltet ihr erst mal lernen, warum man Foren für diverse Sprachen auf einer Domain anbietet, die den Namen c-plusplus trägt
-
AngelaMerkel schrieb:
Ich bin eben noch neu in der Programmierung. Dann schmeiss mich am besten ganz raus. Aber noch einen Hinweis an den Moderator:
Wenn ich erst mal lernen soll, welche Sprache ich verwende, dann solltet ihr erst mal lernen, warum man Foren für diverse Sprachen auf einer Domain anbietet, die den Namen c-plusplus trägtVielleicht solltest Du Dich fragen, wieso Du mit einem Programmcode, der eindeutig nach C# (See Sharp) aussieht überhaupt in einem Forum mit dem Namen c-plusplus fragst? :p
-
Du musst doch wissen, welche Sprache du lernst! Zumindest beim zweiten Versuch. Das nützt dir doch selber auch nichts, wenn du C++-Antworten bekommst. Und wir verschwenden unsere Zeit nicht mit Antworten, die du gar nicht brauchst.
Ich nehme mal an, dass du C# machst.
-
Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C++ (auch C++0x und C++11) in das Forum C# und .NET verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
gib mir deine Adresse und ich sende dir mein Skript zu. Es trägt den Namen "C++, .NET, WPF" und hat 127 Seiten. Bisher haben auch alle Dialog-Anwendungen funktioniert.
Vielleicht sollte ich mir auch ein anderes Tutorial zulegen...
-
AngelaMerkel schrieb:
Vielleicht sollte ich mir auch ein anderes Tutorial zulegen...
Das wäre wohl eher zu empfehlen oder kauf dir gleich ein passendes Buch. Was willst du denn lernen? C#? C++? C++/CLI? Merke: Alles unterschiedliche Sprachen mit unterschiedlichem Einsatzzweck.
Bei deinem Problem am Anfang des Threads habe ich nur Bahnhof verstanden. Kannst du dich verständlicher ausdrücken?
Grüssli
-
SeppJ schrieb:
throw new ChangingException();
Dies hier auch. Was macht das new da? Ist dir überhaupt klar, was das macht?
Das liest man oft, aber was genau ist das Problem? Ok, der catch Block muss es natürlich behandeln und in diesem Beispiel ist es auch nicht wirklich eine "Ausnahme", aber was spricht z.B gegen das Werfen von ArgumentNullExceptions oder Custom Exceptions?
-
@ZehSchnarf
SeppJs Kritik an diesem Punkt bezog sich auf das "new". Er dachte der Op schreibt C++.