以下是什么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。
否则它会跳到最后。
答案 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而不会抛出错误。
等...