2009-02-14 12 views
69

Ich habe eine Schleife, aber es gibt die Möglichkeit für Ausnahmen innerhalb der Schleife ausgelöst werden. Dies würde natürlich mein Programm alle zusammen stoppen. Um das zu verhindern, fange ich die Ausnahmen ab und behandle sie. Aber dann läuft der Rest der Iteration, obwohl eine Ausnahme aufgetreten ist. Gibt es in meiner except:-Klausel ein Schlüsselwort, um den Rest der aktuellen Iteration einfach zu überspringen?Überspringe Iterationen in Python

+2

Folgen Sie nicht sehen, wie die akzeptierte Antwort (Verwendung 'CONTINUE) Ausnahmen abfängt, aber es wurde angenommen. Daher ist die Frage wirklich, wirklich verwirrend. –

+0

@ S.Lott Ich brauche das Schlüsselwort nicht, um die Ausnahme zu fangen, ich habe nur über den allgemeinen Ablauf des Gesamtcodes gesprochen. –

+0

@ The.Anti.9. Was? Zuerst hast du gesagt "Ich möchte die Ausnahmen abfangen". Jetzt sagst du "Ich brauche das Schlüsselwort nicht, um die Ausnahme zu fangen". Könnten Sie das irgendwie klären? –

Antwort

188

Sie suchen nach continue.

+11

Das muss eine der prägnantesten SO Antworten sein, die ich je gesehen habe! –

+21

Die eigentliche Frage: Gibt es das 'g' in 'Pythonic'? –

13

So ähnlich?

for i in xrange(someBigNumber): 
    try: 
     doSomethingThatMightFail() 
    except SomeException, e: 
     continue 
    doSomethingWhenNothingFailed() 
+0

Bearbeitet, um fortzufahren statt zu übergeben. –

36
for i in iterator: 
    try: 
     # Do something. 
     pass 
    except: 
     # Continue to next iteration. 
     continue 
1

Für diesen speziellen Anwendungsfall mit try..except..else ist die sauberste Lösung, die else Klausel wird ausgeführt, wenn keine Ausnahme ausgelöst wurde.

HINWEIS: Die else Klausel muss alle except Klauseln

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