在Ruby中使用if / elsif / else作为条件使用错误的存在/不存在

时间:2009-09-12 05:20:36

标签: ruby

以下是什么Ruby?

if executing the next line wouldn't cause any kind of error then
  execute this line
elsif executing the next line wouldn't cause any kind of error then
  execute this line
else

我一直在阅读救援,例外和评估的API页面,但到目前为止我的任务都失败了。

非常感谢,

史蒂芬。


从Assaf Arkin的comment开始,我将建议以下语法:

if first_condition
 execute_this_line rescue nil
elsif second_condition
 execute_that_line rescue nil
end

结果如下?

  

如果first_condition为真,那就是   可能没有执行execute_this_line   错误,然后它将执行execute_this_line。

     

如果first_condition为真,那么   execute_this_line通常会生成   一个错误,它会跳到最后。

     

如果first-condition为false,它会   test second_condition。

     

如果second_condition为true,那就是   可能没有执行execute_that_line   错误,然后它将执行execute_that_line。

     

否则它会跳到最后。

2 个答案:

答案 0 :(得分:1)

我将重命名您的伪代码以澄清:

if lineA doesn't cause an error
  execute lineA
elsif lineB doesn't cause an error
  execute lineB
end

这是否正确你想要的方式?那么为什么不使用

begin
  lineA
rescue
  error_handling
ensure
  lineB
end

如果你想做更多这方面的事情,你可以嵌套它,并且肯定重构一些新方法是个好主意。

另一种简写:

valA = lineA rescue StandardError
lineB if valA.is_a?(Exception)

当然,您可以多次重复此操作! ;)

答案 1 :(得分:1)

实际上,我认为我需要:

if first_condition rescue nil
 execute_this_line
elsif second_condition rescue nil
 execute_that_line
end

结果如下?

  

如果first_condition为true,那么它将执行execute_this_line。

     

如果first_condition为false或生成错误,它将跳转到second_condition而不会抛出错误。

     

等...