Gibt es eine bessere Möglichkeit, diesen Code ohne goto
zu schreiben? Es scheint unangenehm, aber ich kann mir keinen besseren Weg vorstellen. Ich muss in der Lage sein, einen Wiederholungsversuch durchzuführen, aber ich möchte keinen Code duplizieren.
Hier ist die grundlegende Logik, die ich anstelle einer goto-Anweisung verwenden würde:
%Vor%Ich habe gerade # logs der Versuche hinzugefügt, obwohl die ursprüngliche Frage keine hatte.
Michaels Lösung erfüllt nicht ganz die Anforderungen, die eine bestimmte Anzahl von Malen wiederholen sollen, um den letzten Fehler auszulösen.
Dafür würde ich eine einfache for-Schleife empfehlen, die herunterzählt. Wenn Sie erfolgreich sind, beenden Sie mit Pause (oder, falls zweckmäßig, zurück). Lassen Sie andernfalls den Catch überprüfen, ob der Index auf 0 reduziert ist. Wenn dies der Fall ist, wiederholen Sie den Vorgang, anstatt zu protokollieren oder zu ignorieren.
%Vor%Im obigen Beispiel wäre eine Rückgabe in Ordnung gewesen, aber ich wollte den allgemeinen Fall zeigen.
@ Michaels Antwort (mit Ein korrekt implementierter Catch-Block ist wahrscheinlich am einfachsten in Ihrem Fall zu verwenden und ist der einfachste. Aber im Interesse der Darstellung von Alternativen gibt es hier eine Version, die die "Wiederholungs" -Flusskontrolle in eine separate Methode einbezieht:
%Vor%Sie könnten dies natürlich mit Dingen wie Wiederholungszählungen, besserer Fehlerfortpflanzung usw. verbessern.