2017-08-28 37 views
0

我有以下代碼可以幫助我在處理URL時捕獲重定向錯誤。如何同時捕獲不同的錯誤類型?

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,但我如何在同一時間趕上這兩個錯誤,這樣,當有一個重定向錯誤,代碼知道何處重定向,何時出現其他類型的錯誤,代碼知道何時跳過?

回答

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