Ruby: продолжить цикл после получения исключения - PullRequest
58 голосов
/ 12 апреля 2010

По сути, я хочу сделать что-то вроде этого (в Python или аналогичных императивных языках):

for i in xrange(1, 5):
    try:
        do_something_that_might_raise_exceptions(i)
    except:
        continue    # continue the loop at i = i + 1

Как мне это сделать в Ruby? Я знаю, что есть ключевые слова redo и retry, но они, кажется, повторно выполняют блок try вместо продолжения цикла:

for i in 1..5
    begin
        do_something_that_might_raise_exceptions(i)
    rescue
        retry    # do_something_* again, with same i
    end
end

Ответы [ 3 ]

111 голосов
/ 12 апреля 2010

В Ruby пишется continue next.

50 голосов
/ 11 ноября 2010
for i in 1..5
    begin
        do_something_that_might_raise_exceptions(i)
    rescue
        next    # do_something_* again, with the next i
    end
end
6 голосов
/ 23 января 2013

для печати исключения:

rescue
        puts $!, $@
        next    # do_something_* again, with the next i
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...