我正在尝试调用外部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,然后进行异常处理,似乎异常处理代码会中断读取执行实际工作的代码。
答案 0 :(得分:1)
围绕一大块代码编写异常处理程序,这样,如果块中的第一行失败,您很乐意将所有代码一直跳到块中的最后一行。
如果异常使处理程序出现的方法的其余部分无效,请考虑让异常冒泡到下一层。并非所有内容都必须通过您的方法捕获。
我经常发现自己围绕单行代码编写异常处理程序(使用合适的恢复代码),但这不是一个规则。