我怎样才能让这个ruby代码抛出一个异常并退出呢?

我怎样才能让这个ruby代码抛出一个异常并退出呢?,ruby,exception,Ruby,Exception,我想让它抛出一个异常并死去: begin if meridian != "AM" and meridian != "PM" rescue puts MESSAGE end end 我在谷歌上搜索了很多,但似乎什么都没用。我想要一个if语句在异常失败时抛出异常 我是不是看错了 删除开始/营救/结束如果或将放置消息替换为在此处提出“一些消息”你不需要开始/营救,因为你的如果语句没有遇到任何错误。相反: raise "message" if meridian != "

我想让它抛出一个异常并死去:

begin
  if meridian != "AM" and meridian != "PM"
    rescue
    puts MESSAGE
  end
end   
我在谷歌上搜索了很多,但似乎什么都没用。我想要一个
if
语句在异常失败时抛出异常


我是不是看错了

删除
开始
/
营救
/
结束
如果
或将
放置消息
替换为
在此处提出“一些消息”
你不需要
开始
/
营救
,因为你的
如果
语句没有遇到任何错误。相反:

 raise "message" if meridian != "AM" and meridian != "PM"
试试这个:

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

这起作用了

      MESSAGE = "Check your formatting"
      if meridian != "AM" and  meridian  != "PM"
          abort( MESSAGE )
      end  

我很讨厌现在在ruby中使用“AND”和“AN”,你通过调用
raise
抛出异常。您可以检查此项以了解更多信息:该代码将已经“死亡”-这是无效语法:)
expr if cond
if cond[then]expr
是有效形式。更简洁的语法:
%w(AM-PM)。包括?meridian
如果您希望它是不区分大小写的匹配,请将其设置为
meridian.upcase
fail
只是
raise
的别名,但您在语义上提出了一个很好的观点。