Santa
Santa

Reputation: 11545

Ruby: Continue a loop after catching an exception

Basically, I want to do something like this (in Python, or similar imperative languages):

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

How do I do this in Ruby? I know there are the redo and retry keywords, but they seem to re-execute the "try" block, instead of continuing the loop:

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

Upvotes: 79

Views: 67798

Answers (3)

C. K. Young
C. K. Young

Reputation: 223193

In Ruby, continue is spelt next.

Upvotes: 145

Konstantin
Konstantin

Reputation: 3133

to print the exception:

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

Upvotes: 9

Carlo
Carlo

Reputation: 661

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

Upvotes: 66

Related Questions