Python'da Yinelemeleri Atlama


159

Bir döngü olacak, ama döngü içinde istisnalar yükselme olasılığı vardır. Bu elbette programımı hep birlikte durduracaktı. Bunu önlemek için istisnaları yakalayıp hallederim. Ancak daha sonra bir istisna oluşmasına rağmen yinelemenin geri kalanı çalışır. except:Geçerli yinelemenin geri kalanını atlamak için maddemde kullanılacak bir anahtar kelime var mı ?


4
Kabul edilen cevabın (kullanım continue) istisnaları nasıl yakaladığını görmeyin, ancak kabul edildi. Bu nedenle, soru gerçekten, gerçekten kafa karıştırıcı.
S.Lott

@ S.Lott İstisna yakalamak için anahtar kelimeye ihtiyacım yok, sadece toplam kodun genel akışı hakkında konuşuyordum.
The.Anti.9

@ The.Anti.9. Ne? Önce "İstisnaları yakalamak istiyorum" dedin. Şimdi "İstisnayı yakalamak için anahtar kelimeye ihtiyacım yok" diyorsunuz. Bunu bir şekilde açıklığa kavuşturabilir misiniz?
S.Lott

1
S.Lott @. Ben anahtar kelime ile istisna yakalamak gerekmez, orada sadece bir deneme, kodda ifade hariç ....
The.Anti.9

1
Soruyu kabul edilen cevapla daha iyi hale getirmek için yeniden yazdım.
jilles de wit

Yanıtlar:



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

17

Böyle bir şey mi?

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

1
Geçiş yapmak yerine devam etmek için düzenlendi.
jilles de wit

16

Devam Örneği:

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')

Çıktı:

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


5

Bu özel kullanım try..except..elsedurumu için en temiz çözüm kullanılırsa , bir elseistisna oluşmazsa madde yürütülür.

NOT: elseMadde tüm exceptmaddeleri takip etmelidir

for i in iterator:
    try:
        # Do something.
    except:
        # Handle exception
    else:
        # Continue doing something
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.