2017-11-20 7 views
0

私はルビー初心者です。ルビーの状態の中で「救助偽」とはどういう意味ですか?

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

このコードでどのようなレスキューフォールが意味するのかわかりません。 おかげ

+0

これは、あなたが馬鹿げたコードベースを持っていることを意味します... –

+0

https://stackoverflow.com/a/1542703/525478 –

+0

完璧なデュープではありませんが、近い.... –

答えて

2

1行の救助は、だからあなたのコードはかなりこの

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

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

と同じである糖衣構文

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

あるrescue falsenew_account.save内部でスローされた例外が扱われていることを意味返すものと同じです。false私の意見では、これは悪いデザインです。 new_accountは明らかに2つの異なる失敗事例を持つように設計されていますが、呼び出しコードはそれを無視します。このコードは、保存メソッド内で発生する実際のバグを隠す可能性が非常に高いです。

関連する問題