Veröffentlicht 2. April 201213 j 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?
2. April 201213 j versteh ich dich richtig, dass du unter einem fehlerhaften rückgabewert eine methode die ein null zurückliefert verstehst?
2. April 201213 j 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
2. April 201213 j Ich würde da eine LastError-Klasse basteln, die die Rückgabewerte entgegennimmt, sich den letzten von null verschiedenen merkt und zurückgeben kann.
2. April 201213 j 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.
2. April 201213 j 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ä?
2. April 201213 j 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
3. April 201213 j 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.
3. April 201213 j Autor 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...
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.