我希望这会引发异常并死掉:
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
为if
puts MESSAGE
raise "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