Ruby 1.9.2中的错误处理

use*_*969 0 ruby exception-handling

我有一个Ruby方法,它遍历一个循环(loop_a)并do_something每次循环调用另一个函数().我希望Ruby进入下一个循环,loop_a即使它有函数do_something抛出错误.我正在使用下面的异常处理代码,但应用程序继续停止错误.有人能告诉我我做错了什么吗?

loop_a.each do |str1|
  do_something(str1)
  rescue Exception => e
    Logger.error 'An error occurred: #{e}"
end
Run Code Online (Sandbox Code Playgroud)

And*_*all 6

你需要有begin,rescue,和end.您还打开了单引号并以双引号结束.

loop_a.each do |str1|
  begin
    do_something(str1)
  rescue Exception => e
    Logger.error "An error occurred: #{e}"
  end
end
Run Code Online (Sandbox Code Playgroud)

您可能希望阅读有关Ruby中异常处理的更多信息.

  • 要进一步扩展这一点,如果你在方法定义中,你可以使用一个简单的`rescue`,而不使用通常关联的`begin`.这可能是部分混乱发生的地方. (2认同)