steinadler Geschrieben 2. April 2012 Teilen Geschrieben 2. April 2012 Hallo ihr, folgendes möchte ich machen: Eine Methode mehrfach nacheinander mit jedoch unterschiedlichen Parameter ausführen. Allerdings möchte ich irgendwie feststellen, ob einer dieser Aufrufe einen fehlerhaften Rückgabewert hat (Rückgabewert ist ein Objekt einer Klasse). Diese Prüfung muss ich aber für alle Aufrufe ausführen - ich kann nicht einfach sagen "return irgendwas"; Also etwa so: MyErrorClass[] error = new MyErrorClass[5]; error[0] = methode(5, 2, 3); error[1] = methode(5, 16, 3); error[2] = methode(5, 27, 3); error[3] = methode(5, 2, 3); error[4] = methode(5, 2, 1); int i; for(i=0; i<error.Length; i++) { if(error[i] != null) break; } return error[i]; // erster aufgetretener Fehler Diese Methodenaufrufe sind so eine Art Prüfungsmethoden der übergebenen Parameter. Hat da jemand eine elegante Möglichkeit für sowas auf Lager? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Proof Geschrieben 2. April 2012 Teilen Geschrieben 2. April 2012 versteh ich dich richtig, dass du unter einem fehlerhaften rückgabewert eine methode die ein null zurückliefert verstehst? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Pointerman Geschrieben 2. April 2012 Teilen Geschrieben 2. April 2012 versteh ich dich richtig, dass du unter einem fehlerhaften rückgabewert eine methode die ein null zurückliefert verstehst? Nein, im Fehlerfall wird eben nicht null, sondern ein Fehlerobjekt zurueckgeliefert. Allerdings sehe ich ein Problem, wenn alle Methoden ohne Fehler durchlaufen: - Die Indexvariable i wird um eins erhoeht --> i == 5 - Die Schleife wird nicht nocheinmal durchlaufen, weil die Schleifgenbedingung nicht erfuellt ist - return moechte das Element 5 zurueckgeben, obwohl es keine Element 5 gibt Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 2. April 2012 Teilen Geschrieben 2. April 2012 Ich würde da eine LastError-Klasse basteln, die die Rückgabewerte entgegennimmt, sich den letzten von null verschiedenen merkt und zurückgeben kann. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Guybrush Threepwood Geschrieben 2. April 2012 Teilen Geschrieben 2. April 2012 Was soll den passieren wenn mehrere Aufrufe einen Fehler zurückgeben? Wenn wirklich immer nur der erste zurückgegeben werden soll kannst du auch einfach einen Setter firstError oder so schreiben der den nur setzt wenn er noch null ist. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
lilith2k3 Geschrieben 2. April 2012 Teilen Geschrieben 2. April 2012 Hä? Was hast Du vor, und worum geht es tatsächlich? Aus dem von Dir beschriebenen Szenario ergibt sich, dass Du eine Methode aufrufen möchtest, die einen Fehlerhaften Rückgabewert hat. Frage: 1) Warum gibt es überhaupt Rückgabewerte, die "fehlerhaft" sein können? 2) Weshalb wird kein Gebrauch von Exceptions gemacht (e.g. ArgumentException oder weißderGeierirgendwelcheCustomException)? => Samuraiprinzip: entweder Erfolg oder Tod 3) Warum gibst Du in Deinem Code die Nummer des Aufrufs an, der schiefgelaufen ist? 4) Selbst wenn es einen tiefern Sinn haben solle, warum arbeitest Du dann nicht mit einem try-catch Block innerhalb Deiner Methode? 5) hä? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 2. April 2012 Teilen Geschrieben 2. April 2012 Ich schließe mich da an, das löst man mit Exceptions. In Deiner Methode wird bei einem Fehler eine Exception geworfen, im übergeordneten Auf kannst Du via try-catch die Exception fangen (oder auch nicht) und darauf reagieren. Alles andere ist schlechter Stil Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 3. April 2012 Teilen Geschrieben 3. April 2012 Mein Eindruck ist, dass das Testmethoden sind, die im Fall des Fehlschlags detaillierte Fehlerinformationen liefern. Wenn das Ziel wirklich ist, grundsätzlich alle aufzurufen, auch wenn eine fehlschlägt (und man wirklich nur die Fehlerinformationen vom ersten Fehlschlag haben will), kommt man mit Exceptions nicht weit. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
steinadler Geschrieben 3. April 2012 Autor Teilen Geschrieben 3. April 2012 Mein Eindruck ist, dass das Testmethoden sind, die im Fall des Fehlschlags detaillierte Fehlerinformationen liefern. Wenn das Ziel wirklich ist, grundsätzlich alle aufzurufen, auch wenn eine fehlschlägt (und man wirklich nur die Fehlerinformationen vom ersten Fehlschlag haben will), kommt man mit Exceptions nicht weit. Du hast recht, es sind Testmethoden (hatte ich auch glaube irgendwo geschrieben). Die Methoden machen soetwas in der Art wie int.TryConvert(...). Meine aufrufende Methode soll, damit ich nicht zweimal den gleichen Code schreiben muss, per bool-Parameter einmal die übergebenen Parameter auf Korrektheit testen und zum anderen die ausgelesenen Werte klasseninternen Variablen zuweisen. Treten während irgendeiner Konvertierung Fehler auf, werden diese in eine Liste geschrieben, welche ich nachher anzeigen möchte. Rufe ich die Methode mit der Funktion 'Werte zuweisen' auf, interessiert mich die Liste nicht, sondern der erste aufgetretene Fehler. Aber jetzt, wenn ich das so schreibe, fällt mir auf, dass ich ja einfach den Wert aus der Liste nehmen kann... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.