在 Ruby 中,你能为 twitter 创建一个 rescue,当出现错误时它会继续循环吗?

In Ruby, can you create a rescue for twitter for when there is an error it will continue the loop?

我正在尝试创建一个 rescue,如果出现 Twitter::Error::NotFound 错误(例如不存在),它将继续执行循环。请帮忙,谢谢。

下面是代码,

begin
  File.open("user_ids.txt") do |file| 
    file.each do |id|
      puts client.user("#{id}").screen_name
    rescue Twitter::Error::NotFound => error
      next # skip this item
    end
  end
end

有没有一种方法可以跳过并继续转到循环中的下一项,而不是 retry 方法? 我很确定 error.rate_limit 不适用(我从另一个救援电话复制了这段代码),还有其他方法可以调用吗?喜欢 error.notfound.continue_with_loop

我想创建一个救援程序,如果出现诸如 does not exist 之类的错误,它就会继续循环。请帮忙,谢谢。

next 将继续并重试循环中的下一项。 retry 将使用相同的项目重试循环。

注意:对于该方法中的所有 do,您没有足够的 end。所以我会尝试:

begin
  File.open("user_ids.txt") do |file| 
    file.each do |id|
      puts client.user("#{id}").screen_name
    rescue Twitter::Error::NotFound => error
      sleep error.rate_limit.reset_in + 1
      next # skip this item
    end
  end
end

注意:当您缺少 end 时,看看正确的缩进如何清楚地显示出来?

您可能需要移动当前在地块周围的 begin/end 块 - 使其仅位于您要从中拯救的代码周围(否则它将默认位于外部 begin/end 而不是你的循环)

File.open("user_ids.txt") do |file| 
  file.each do |id|
    begin
      puts client.user("#{id}").screen_name
    rescue Twitter::Error::NotFound => error
      sleep error.rate_limit.reset_in + 1
      next # skip this item
    end
  end
end