如何让这个ruby代码抛出异常并保释?

时间:2012-10-26 21:51:30

标签: ruby exception

我希望这会抛出异常并死掉:

begin
  if meridian != "AM" and meridian != "PM"
    rescue
    puts MESSAGE
  end
end   
我搜索了很多,但似乎没有任何效果。如果失败,我希望if语句抛出异常。

我是以错误的方式看待这个吗?

6 个答案:

答案 0 :(得分:4)

试试这个:

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

答案 1 :(得分:1)

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

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

这与案例无关,也适用于符号。

答案 2 :(得分:1)

恕我直言,你应该使用fail代替加注,以获取可读性问题并查看以下链接。

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

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

答案 3 :(得分:0)

删除begin周围的rescue / end / if或将puts MESSAGE替换为raise "some_message_here"

答案 4 :(得分:0)

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

 raise "message" if meridian != "AM" and meridian != "PM"

答案 5 :(得分:0)

这很有用

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