私はこれが例外をスローして死ぬことを望みます:
begin
if meridian != "AM" and meridian != "PM"
rescue
puts MESSAGE
end
end
私はたくさんググったが、何もうまくいかないようだ。if
ステートメントが失敗した場合に例外をスローするようにしたい。
私はこれを間違った方法で見ていますか?
これを試して:
raise "message" unless ["AM", "PM"].include? meridian
IMHOはfail
、読みやすさの問題のために、raiseの代わりに使用する必要があります。以下のリンクを参照してください。
fail "message" unless ["AM", "PM"].include? meridian
正規表現も使用できます。
raise 'message' unless meridian =~ /\A(a|p)m\z/i
これは大文字と小文字を区別せずに一致し、記号でも機能します。
これはうまくいった
MESSAGE = "Check your formatting"
if meridian != "AM" and meridian != "PM"
abort( MESSAGE )
end
周囲のbegin
/ rescue
/を削除するか、次のように置き換えますend
if
puts MESSAGE
raise "some_message_here"
ステートメントでエラーが発生していないため、 begin
/は必要ありません。その代わり:rescue
if
raise "message" if meridian != "AM" and meridian != "PM"