0

我正在尝试调用外部 API。我处理了四个或更多的呼叫异常。

如果我打多个电话,代码会很快增加。我应该为每个处理异常并返回数据的此类调用编写一个包装器吗?

这是此类代码的示例(这不是我的)。调用user_search之后是异常处理。

注意:我没有使用 Rails

begin
@twitter = Twitter.user_search(name)
rescue Twitter::Unauthorized
  puts "Not authorized. Please check the Twitter credentials at the top of the script."
  break

rescue Twitter::BadRequest => e
  puts "Hit rate limit. Continuing scraping at #{e.ratelimit_reset}"
  sleep e.retry_after
  retry

rescue Exception => e
  puts "Something else went wrong:"
  puts e.message
end

我已经更改了问题的标题。我认为问题更多是如何处理长异常处理代码。在示例代码中,假设我对 twitter API 进行了多次调用,然后进行了异常处理,看起来异常处理代码会中断读取执行实际工作的代码。

4

1 回答 1

1

围绕一大块代码编写异常处理程序,这样,如果块中的第一行失败,您会很高兴跳过所有代码,直到块中的最后一行。

如果异常使处理程序出现的整个其余方法无效,请考虑让异常冒泡到下一层。并非所有东西都必须被您的方法捕获。

我经常发现自己围绕单行代码编写异常处理程序(使用合适的恢复代码),但这不是一个规则。

于 2013-11-01T02:57:11.080 回答