我是红宝石新手,有一个问题。
if (new_account.save rescue false)
# when account save success
else
# when account save has error
end
我不确定此代码中的抢救措施是什么意思。 感谢
答案 0 :(得分:2)
单线拯救是语法糖
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
显然设计为有两种不同的失败案例,但调用代码忽略它。此代码极有可能隐藏保存方法中发生的实际错误。