2017-08-28 1 views
0

Ich habe den folgenden Code, um mir Redirect-Fehler bei der Verarbeitung von URLs zu fangen.Wie werden verschiedene Fehlertypen gleichzeitig abgefangen?

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 

Es funktioniert gut für URL-Redirect-Fehler, aber es fängt keine anderen Arten von Fehlern. Beispielsweise hat eine URL einen 416-Fehler ausgelöst, der von dem obigen Code nicht behandelt werden konnte.

kann ich

rescue StandardError => e 

den 416 Fehler zu fangen und lassen Sie die URL ich Verarbeitung war, aber wie fange ich beide Fehler gleichzeitig, so dass, wenn eine Umleitung Fehler ist, der Code kennt wo umleiten, und wenn es andere Arten von Fehlern gibt, weiß der Code, wann er überspringt?

Antwort

4

Ich brauche nur noch eine Rettung. Sie können so viele eingeben wie Sie benötigen.

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 
Verwandte Themen