使用错误引发来控制if / else语句

时间:2017-02-12 23:13:27

标签: ruby if-statement error-handling

在这里学习ruby,如果出现错误来控制if / else语句,我该如何使用?在ruby伪代码中它就像是。

if block.call raise? 
   #if block doesn't exist and an error is raised do this
else 
  #if block does exist do this
end

1 个答案:

答案 0 :(得分:1)

你可以像这样使用内联救援:

if block.call rescue false
else 
end

虽然你不应该这样做。原因是这将拯救块中的任何错误。说你在块定义中拼错了一些单词。您的代码将按照预期的方式运行,您可能很难跟踪它。

在这种情况下,要检查是否给出了阻止,您可以简单地说if block。如果您使用的是yield而不是&block参数,则可以使用特殊方法if block_given?

当然,您可以使用救援来实现条件逻辑,但这不是他们的目的,并且在大多数情况下并没有使事情变得简单。