"rescue false" 里面的 if condition in ruby 是什么意思

what does "rescue false" mean inside if condition in ruby

我是ruby新手,有一个问题。

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

我不确定 rescue false 在此代码中的含义。 谢谢

一行解救是语法糖

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

所以你的代码和这个差不多

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

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

rescue false 表示在 new_account.save 内部抛出的异常与返回 false 的异常处理相同。在我看来,这是 糟糕的设计 new_account 显然设计为有两种不同的失败情况,但调用代码忽略了它。此代码极有可能隐藏保存方法中发生的实际错误。