B Seven
B Seven

Reputation: 45943

What is invalid next in Ruby?

The following code works:

collection.each do |i|
  begin
    next if i > 10
    i += 1
  rescue
    puts "could not process #{ i }"
  end
end

However, when we refactor:

collection.each do |i|
  begin
    increment i
  rescue
    puts "could not process #{ i }"
  end
end

def increment i
  next if i > 10
  i += 1
end

I get invalid next error. Is this a limitation of Ruby (1.9.3)?

Does the begin rescue block work the same way if there is an exception in the increment method?

Upvotes: 3

Views: 6484

Answers (1)

ChrisInEdmonton
ChrisInEdmonton

Reputation: 4578

Your next statement must occur inside a loop. There's no loop inside your increment method.

Exceptions will 'bubble up', so if there's an exception in your increment method, it will be caught by the rescue section of the calling method.

Upvotes: 15

Related Questions