Рассмотрим этот блок begin-rescue-secure:
attempts=0
begin
make_service_call()
rescue Exception
retry unless attempts>2
exit -1
ensure
attemps += 1
end
Если вы запустите этот код как есть, он вызовет исключение, потому что нет функции с именем 'make_service_call () '. Итак, он повторяет попытку. Но он застрянет в бесконечном цикле, потому что элемент управления никогда не переходит в состояние «обеспечения» из-за «повторной попытки».Не следует ли «гарантировать» часть блока, чтобы код в нем запускался независимо от того, что происходит в «начале» или «спасении»?
Конечно, я могу увеличить счет в 'begin' - не в этом дело. Я просто задаю вопрос о «гарантии» для большей ясности.