Ruby: продолжить цикл после перехвата исключения


в принципе, я хочу сделать что-то вроде этого (на 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 51

3 ответа:

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

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

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

rescue
        puts $!, $@
        next    # do_something_* again, with the next i
end