我希望这会引发异常并死掉:
begin
if meridian != "AM" and meridian != "PM"
rescue
puts MESSAGE
end
end
我用谷歌搜索了很多,但似乎没有任何效果。我想要一个if语句在失败时抛出异常。
我看错了吗?
试试这个:
raise "message" unless ["AM", "PM"].include? meridian
您还可以使用正则表达式:
raise 'message' unless meridian =~ /\A(a|p)m\z/i
这与大小写无关,也适用于符号。
恕我直言,出于可读性问题,您应该使用fail而不是 raise,请参阅下面的链接。
fail "message" unless ["AM", "PM"].include? meridian
删除begin/ rescue/或替换end为ifputs MESSAGEraise "some_message_here"
您不需要begin/rescue因为您的if语句没有遇到任何错误。反而:
raise "message" if meridian != "AM" and meridian != "PM"
这行得通
MESSAGE = "Check your formatting"
if meridian != "AM" and meridian != "PM"
abort( MESSAGE )
end