xem xét:lệnh break trong khối finally nuốt ngoại lệ
def raiseMe(text="Test error"):
raise Exception(text)
def break_in_finally_test():
for i in range(5):
if i==2:
try:
raiseMe()
except:
raise
else:
print "succeeded!"
finally:
print "testing this!"
break
if __name__=='__main__':
break_in_finally_test()
tôi mong đợi để xem Exception("Test error")
được nâng lên, nhưng thay vì chỉ "thử nghiệm này" được in ra. Ý định, tất nhiên, là để gọi raiseMe()
chỉ một lần, không có vấn đề nếu chúng ta thành công hay không - nhưng nếu nó làm tăng một ngoại lệ, tôi đã muốn thấy điều đó!
Tại sao phá vỡ ngoại lệ mà tôi đã nêu rõ?
Tôi không chắc tại sao chính xác điều đó xảy ra (và thấy nó hơi ngạc nhiên), nhưng bạn có thể đột nhập bên trong 'else' thay vào đó, vì trong trường hợp ngoại lệ, nó sẽ thoát khỏi vòng lặp. – bereal
Tôi có thể hiểu làm thế nào 'return' trong công việc cuối cùng, nhưng với' break' nó chỉ là lạ. Ví dụ của bạn không bao gồm điều này, nhưng phương pháp thậm chí sẽ tiếp tục thực hiện sau khi vòng lặp! –