web-dev-qa-db-fra.com

Ruby: continuer une boucle après avoir attrapé une exception

Fondamentalement, je veux faire quelque chose comme ça (en Python, ou dans des langages impératifs similaires):

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

Comment faire cela en Ruby? Je sais qu'il existe les mots clés redo et retry, mais ils semblent réexécuter le bloc "try", au lieu de continuer la boucle:

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

Dans Ruby, continue est orthographié next.

112
Chris Jester-Young
for i in 1..5
    begin
        do_something_that_might_raise_exceptions(i)
    rescue
        next    # do_something_* again, with the next i
    end
end
50
Carlo

pour imprimer l'exception:

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