3

私はこれが例外をスローして死ぬことを望みます:

begin
  if meridian != "AM" and meridian != "PM"
    rescue
    puts MESSAGE
  end
end   

私はたくさんググったが、何もうまくいかないようだ。ifステートメントが失敗した場合に例外をスローするようにしたい。

私はこれを間違った方法で見ていますか?

4

6 に答える 6

4

これを試して:

raise "message" unless ["AM", "PM"].include? meridian
于 2012-10-26T21:59:13.687 に答える
1

IMHOはfail、読みやすさの問題のために、raiseの代わりに使用する必要があります。以下のリンクを参照してください。

fail "message" unless ["AM", "PM"].include? meridian

https://github.com/bbatsov/ruby-style-guide#exceptions

于 2012-10-26T22:56:27.307 に答える
1

正規表現も使用できます。

raise 'message' unless meridian =~ /\A(a|p)m\z/i

これは大文字と小文字を区別せずに一致し、記号でも機能します。

于 2012-10-26T22:28:28.553 に答える
0

これはうまくいった

      MESSAGE = "Check your formatting"
      if meridian != "AM" and  meridian  != "PM"
          abort( MESSAGE )
      end  
于 2012-10-27T23:05:44.530 に答える
0

周囲のbegin/ rescue/を削除するか、次のように置き換えますendifputs MESSAGEraise "some_message_here"

于 2012-10-26T21:57:33.010 に答える
0

ステートメントでエラーが発生していないため、 begin/は必要ありません。その代わり:rescueif

 raise "message" if meridian != "AM" and meridian != "PM"
于 2012-10-26T21:59:09.770 に答える