私はYYYY-DD-MMの形式でなければならないparamsから文字列の日付を取得しています。パラメータが無効な日付の場合はnil
をminimum
に割り当てます。 paramが例えば2013-40-50だった場合のように。私は成功し、そうすることができる午前:.tryメソッドがプログラムを終了するのはなぜですか?
minimum = Date.try(:parse, (params[:newer_than])) if params[:newer_than].present?
日付が正しい形式であれば、それはminimum
に割り当てられ、それ以外nil
があります。ただし、nil
の場合、プログラムは終了し、ArgumentError - 無効な日付が返されます。
.try
を使って私が考えているのは、実際には失敗しても大丈夫だということです。私はそれが後で無ければ、その事件を処理している。 minimum
に割り当てられた行でエラーがスローされます。
どのように達成できますか? methosがオブジェクトに定義されている場合
minimum = begin
Date.parse(params[:newer_than])
rescue ArgumentError, TypeError
nil
end
がdocsによると、普通のRubyのオブジェクト#のようなtry
を送るので、ArgumentError
とTypeError
のようなエラーを防ぐことはできません。
大変ありがとうございます – Abd00s