Melewati Iterasi dengan Python

159

Saya memiliki perulangan, tetapi ada kemungkinan pengecualian muncul di dalam perulangan. Ini tentu saja akan menghentikan program saya bersama-sama. Untuk mencegahnya saya menangkap pengecualian dan menanganinya. Tetapi kemudian sisa iterasi berjalan meskipun pengecualian terjadi. Apakah ada kata kunci untuk digunakan dalam except:klausa saya untuk hanya melewatkan sisa iterasi saat ini?

The.Anti.9
sumber
4
Tidak melihat bagaimana jawaban yang diterima (menggunakan continue) menangkap pengecualian, tetapi diterima. Karena itu, pertanyaannya benar-benar membingungkan.
S.Lott
@ S.Lott Saya tidak perlu kata kunci untuk menangkap pengecualian, saya hanya berbicara tentang aliran umum dari kode total.
The.Anti.9
@ The.Anti.9. Apa? Pertama Anda mengatakan "Saya ingin menangkap pengecualian". Sekarang Anda mengatakan "Saya tidak perlu kata kunci untuk menangkap pengecualian". Bisakah Anda mengklarifikasi hal ini dengan cara tertentu?
S.Lott
1
@ S.Lott. Saya tidak perlu menangkap pengecualian dengan kata kunci, hanya perlu dicoba, kecuali pernyataan dalam kode ....
The.Anti.9
1
Saya menulis ulang pertanyaan agar lebih cocok dengan jawaban yang diterima.
jilles de wit

Jawaban:

381

Anda mencari untuk melanjutkan .

André
sumber
31
Ini pasti salah satu jawaban SO yang paling ringkas yang pernah saya lihat!
Austin A
70
Pertanyaan sebenarnya: Apakah mengeluarkan 'g' in 'lookin' Pythonic?
Mason Gardner
50
for i in iterator:
    try:
        # Do something.
        pass
    except:
        # Continue to next iteration.
        continue
Alex McBride
sumber
17

Sesuatu seperti ini?

for i in xrange( someBigNumber ):
    try:
        doSomethingThatMightFail()
    except SomeException, e:
        continue
    doSomethingWhenNothingFailed()
S.Lott
sumber
1
Diedit untuk menggunakan terus daripada lulus.
jilles de wit
16

Contoh untuk Lanjutkan:

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

Keluaran:

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
sumber
5

Untuk penggunaan kasus khusus ini try..except..elseadalah solusi terbersih, elseklausa akan dieksekusi jika tidak ada pengecualian yang dimunculkan.

CATATAN: elseKlausa harus mengikuti semua exceptklausa

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