การข้ามการวนซ้ำใน Python


159

ฉันมีการวนซ้ำไปมา แต่มีความเป็นไปได้ที่จะมีข้อยกเว้นเกิดขึ้นภายในลูป หลักสูตรนี้จะหยุดโปรแกรมของฉันทั้งหมดเข้าด้วยกัน เพื่อป้องกันไม่ให้ฉันจับข้อยกเว้นและจัดการพวกเขา แต่ส่วนที่เหลือของการวนซ้ำจะทำงานแม้ว่าจะมีข้อยกเว้นเกิดขึ้น มีคำสำคัญที่ใช้ในexcept:ข้อของฉันเพียงแค่ข้ามส่วนที่เหลือของการทำซ้ำปัจจุบันหรือไม่?


4
ไม่เห็นว่าคำตอบที่ได้รับการยอมรับ (ใช้continue) จับข้อยกเว้น แต่ได้รับการยอมรับ ดังนั้นคำถามนี้ทำให้สับสนจริงๆ
S.Lott

@ S.Lott ฉันไม่ต้องการคำหลักเพื่อตรวจสอบข้อยกเว้นฉันแค่พูดถึงการไหลทั่วไปของรหัสทั้งหมด
The.Anti.9

@ The.Anti.9 อะไร? ครั้งแรกที่คุณกล่าวว่า "ผมต้องการที่จะจับข้อยกเว้น" ตอนนี้คุณกำลังจะบอกว่า "ผมไม่จำเป็นต้องมีคำหลักที่จะจับข้อยกเว้น" คุณช่วยอธิบายเรื่องนี้ได้บ้างไหม?
S.Lott

1
@ S.Lott ฉันไม่ต้องการที่จะจับข้อยกเว้นกับคำที่มีเพียงแค่จะต้องมีการลองยกเว้นคำสั่งในรหัส ....
The.Anti.9

1
ฉันตั้งคำถามใหม่เพื่อให้ตรงกับคำตอบที่ยอมรับได้ดีขึ้น
jilles เดอปัญญา

คำตอบ:




17

อะไรแบบนี้?

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

1
แก้ไขเพื่อการใช้งานอย่างต่อเนื่องมากกว่าผ่าน
jilles de wit

16

ตัวอย่างสำหรับดำเนินการต่อ:

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

เอาท์พุท:

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

สำหรับเรื่องนี้ใช้เฉพาะกรณีใช้try..except..elseเป็นทางออกที่สะอาดที่elseข้อจะถูกดำเนินการถ้าไม่มีข้อยกเว้นได้รับการเลี้ยงดู

หมายเหตุ: elseข้อต้องทำตามทุกexceptข้อ

for i in iterator:
    try:
        # Do something.
    except:
        # Handle exception
    else:
        # Continue doing something
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.