我该如何处理长异常处理代码

时间:2013-11-01 02:46:53

标签: ruby

我正在尝试调用外部API。我处理了四个或更多的例外情况。

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

以下是此类code的示例(这不是我的)。对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,然后进行异常处理,似乎异常处理代码会中断读取执行实际工作的代码。

1 个答案:

答案 0 :(得分:1)

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

如果异常使处理程序出现的方法的其余部分无效,请考虑让异常冒泡到下一层。并非所有内容都必须通过您的方法捕获。

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