Iterationen in Python überspringen

159

Ich habe eine Schleife im Gange, aber es besteht die Möglichkeit, dass Ausnahmen innerhalb der Schleife ausgelöst werden. Dies würde natürlich mein Programm alle zusammen stoppen. Um dies zu verhindern, fange ich die Ausnahmen ab und behandle sie. Der Rest der Iteration wird dann ausgeführt, obwohl eine Ausnahme aufgetreten ist. Gibt es ein Schlüsselwort in meiner except:Klausel, um den Rest der aktuellen Iteration zu überspringen?

The.Anti.9
quelle
4
Sehen Sie nicht, wie die akzeptierte Antwort (Verwendung continue) Ausnahmen abfängt, aber sie wurde akzeptiert. Daher ist die Frage wirklich sehr, sehr verwirrend.
S.Lott
@ S.Lott Ich brauche das Schlüsselwort nicht, um die Ausnahme abzufangen, ich habe nur über den allgemeinen Fluss des gesamten Codes gesprochen.
The.Anti.9
@ The.Anti.9. Was? Zuerst sagten Sie "Ich möchte die Ausnahmen fangen". Jetzt sagen Sie "Ich brauche das Schlüsselwort nicht, um die Ausnahme abzufangen". Könnten Sie das irgendwie klarstellen?
S.Lott
1
@ S.Lott. Ich muss die Ausnahme nicht mit dem Schlüsselwort abfangen, es muss nur ein Versuch sein, außer der Anweisung im Code ....
The.Anti.9
1
Ich habe die Frage umformuliert, damit sie besser zur akzeptierten Antwort passt.
Jilles de Wit

Antworten:

381

Sie suchen weiter .

André
quelle
31
Dies muss eine der prägnantesten SO-Antworten sein, die ich je gesehen habe!
Austin A
70
Die eigentliche Frage: Wird das 'g' in 'lookin' Pythonic weggelassen?
Mason Gardner
50
for i in iterator:
    try:
        # Do something.
        pass
    except:
        # Continue to next iteration.
        continue
Alex McBride
quelle
17

Etwas wie das?

for i in xrange( someBigNumber ):
    try:
        doSomethingThatMightFail()
    except SomeException, e:
        continue
    doSomethingWhenNothingFailed()
S.Lott
quelle
1
Bearbeitet, um fortzufahren, anstatt zu bestehen.
Jilles de Wit
16

Beispiel für Weiter:

number = 0

for number in range(10):
   number = number + 1

   if number == 5:
      continue    # continue here

   print('Number is ' + str(number))

print('Out of loop')

Ausgabe:

Number is 1
Number is 2
Number is 3
Number is 4
Number is 6 # Note: 5 is skipped!!
Number is 7
Number is 8
Number is 9
Number is 10
Out of loop
Jesu Kiran Spurgen
quelle
5

Für diesen speziellen Anwendungsfall try..except..elseist die Verwendung die sauberste Lösung. Die elseKlausel wird ausgeführt, wenn keine Ausnahme ausgelöst wurde.

HINWEIS: Die elseKlausel muss allen exceptKlauseln folgen

for i in iterator:
    try:
        # Do something.
    except:
        # Handle exception
    else:
        # Continue doing something
Istvan Jeno Veres
quelle