Zum Inhalt springen

Elegante Schreibweise gesucht


steinadler

Empfohlene Beiträge

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?

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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ä?

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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...

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...