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

您还可以使用正则表达式:

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

这与大小写无关,也适用于符号。

于 2012-10-26T22:28:28.553 回答
1

恕我直言,出于可读性问题,您应该使用fail而不是 raise,请参阅下面的链接。

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

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

于 2012-10-26T22:56:27.307 回答
0

删除begin/ rescue/或替换endifputs MESSAGEraise "some_message_here"

于 2012-10-26T21:57:33.010 回答
0

您不需要begin/rescue因为您的if语句没有遇到任何错误。反而:

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

这行得通

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