Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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?

versteh ich dich richtig, dass du unter einem fehlerhaften rückgabewert eine methode die ein null zurückliefert verstehst?

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

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

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

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.

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

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.