Рассмотрим:
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()
Я ожидал, что Exception( "Test error" )
будет поднят, но вместо этого будет напечатано только "тестирование этого". Разумеется, намерение состояло в том, чтобы вызвать raiseMe()
только один раз, независимо от того, удастся нам это сделать или нет, но если это вызывает исключение, я бы хотел увидеть это!
Почему перерыв проглатывает исключение, которое я явно выражаю?