2013-08-16 9 views
8

में 404 नहीं मिली त्रुटियों को कैसे संभालें I वेब पेजों को स्क्रैप करने के लिए नोकोगिरी का उपयोग कर रहा हूं। कुछ यूआरएल अनुमान लगाने की आवश्यकता है और जब वे मौजूद नहीं हैं तो 404 त्रुटि नहीं मिली है। क्या इस अपवाद को पकड़ने का कोई तरीका है?नोकोगिरी

http://yoursite/page/38475 #=> page number 38475 doesn't exist 

मैंने निम्नलिखित काम करने की कोशिश की जो काम नहीं किया।

url = "http://yoursite/page/38475" 
doc = Nokogiri::HTML(open(url)) do 
    begin 
    rescue Exception => e 
     puts "Try again later" 
    end 
end 

उत्तर

18

यह काम नहीं करता है क्योंकि आप कोड का हिस्सा है (यह open(url) कॉल है) कि 404 स्थिति खोजने के मामले में एक त्रुटि को जन्म देती है बचाव नहीं कर रहे हैं। निम्नलिखित कोड काम करना चाहिए:

url = 'http://yoursite/page/38475' 
begin 
    file = open(url) 
    doc = Nokogiri::HTML(file) do 
    # handle doc 
    end 
rescue OpenURI::HTTPError => e 
    if e.message == '404 Not Found' 
    # handle 404 error 
    else 
    raise e 
    end 
end 

Btw, Exception बचाव के बारे में: Why is it a bad style to `rescue Exception => e` in Ruby?

+0

मैं बात 'e.io.not_found उपयोग करने के लिए बेहतर है' – Calin

संबंधित मुद्दे