【发布时间】:2017-08-24 15:21:03
【问题描述】:
我觉得有点奇怪,因为有很多问题有点像这样,但不够接近,或者没有答案。
[编辑:我正在重新表述问题以使其更清楚]
我有一个循环可以做很多事情,并且正在使用它来查看各种选项是否可以使事情变得更易读、更清晰。最后,我搞砸了一些东西,它抛出了异常,被救援抓住了。到现在为止还挺好。但是,我无法找到任何方法让 ruby 在循环的同一迭代中继续执行以下语句 - 异常总是会导致以下语句并继续进行下一次迭代 - 默认行为。重做或重试将毫无意义并导致无限循环,再次遇到相同的错误和异常等,
我有什么办法可以强制 ruby 以某种方式处理错误,然后从中断的地方继续?
这是一个样本,从我不知道从哪里偷来并改编的。
3.times do |i|
begin
# first bunch of stuff to do
# second bunch of stuff to do
# third bunch of stuff to do
# fourth bunch of stuff to do
rescue => e
p e
end
end
基本上,在这个例子中,我希望在继续循环的下一次迭代之前执行所有四组东西,即使其中一个会导致错误。我不是要处理错误,让我看到异常结果等,而是有效地忽略它并继续做所有其他的事情。
有什么想法吗?这可能是我以前从未见过的非常明显的事情。
【问题讨论】:
-
无论是否发生异常,是否都应该执行
puts? -
是的。这模拟了我正在搞砸的主程序中的字符串操作等。
-
如果您故意使用异常来进行流控制,那可能是个错误。为什么不只是一个
if? -
感谢您的编辑,顺便说一句 - 我只是在您编辑时添加了“”。 :)
-
“我有一个循环可以做很多事情”——也许你应该提供一个更详细的例子。很难根据循环中的单个
begin-rescue块给出建议 :-)
标签: ruby-on-rails ruby