0

I am ruby newbie and have one question.

if (new_account.save rescue false)
   # when account save success
else
   # when account save has error
end

I am not sure what rescue false means in this code. Thanks

Nomura Nori
  • 4,689
  • 8
  • 47
  • 85

1 Answers1

4

A one-line rescue is syntactic sugar

foo.bar rescue false
# same as
begin
  foo.bar
rescue
  false
end

So your code is pretty much the same as this

result = nil
begin
  result = new_account.save
rescue
  result = false
end

if result
  # when account save success
else
  # when account save has error
end

The rescue false means that an exception thrown inside new_account.save is treated the same as it returning false. In my opinion, this is bad design. new_account is clearly designed to have two different failure cases, but the calling code ignores it. This code is extremely likely to hide actual bugs occurring inside the saving method.

Max
  • 21,123
  • 5
  • 49
  • 71