我有以下代码可以帮助我在处理网址时捕获重定向错误。
begin
page = Nokogiri::HTML(uri.open(redirect: false))
rescue OpenURI::HTTPRedirect => redirect
uri = redirect.uri
puts "retry #{tries}: #{uri}"
retry if (tries-=1) > 0
raise
它适用于URL重定向错误,但它不会捕获任何其他类型的错误。例如,一个URL引发了416错误,该错误无法由上述代码处理。
我可以用
rescue StandardError => e
捕获416错误并跳过我正在处理的URL,但是如何同时捕获这两个错误,以便在出现重定向错误时,代码知道重定向的位置,以及何时存在其他类型的错误错误,代码知道何时跳过?
答案 0 :(得分:4)
只需要进行另一次救援。你可以根据需要加入。
begin
page = Nokogiri::HTML(uri.open(redirect: false))
rescue OpenURI::HTTPRedirect => redirect
uri = redirect.uri
puts "retry #{tries}: #{uri}"
retry if (tries-=1) > 0
raise
rescue OtherError => e
# do something