web-dev-qa-db-ja.com

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
58
Santa

Rubyでは、continuenextと綴られます。

112
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

例外を出力するには:

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