2016-08-17 3 views
0

Код не выполняется (помещает «эй») в метод сбора после вызова searchEmails (страница). Я, вероятно, пропустил что-то простое с Ruby, потому что я просто возвращаюсь к нему.Код Ruby не выполнен после вызова метода

def searchEmails(page_to_search) 
    begin 
    html = @agent.get(url).search('html').to_s 
    mail = html.scan(/['.'\w|-]*@+[a-z]+[.]+\w{2,}/).map.to_a 
    base = page_to_search.uri.to_s.split("//", 2).last.split("/", 2).first 
    mail.each{|e| @file.puts e+";"+base unless e.include? "example.com" or e.include? "email.com" or e.include? "domain.com" or e.include? "company.com" or e.length < 9 or e[0] == "@"} 
    end 
end 

def harvest(url) 
    begin 
    page = @agent.get(url) 
    searchEmails(page) 
    puts "hey" 
    rescue Exception 
    end 
end 

url="www.example.com" 
harvest(url) 
+3

Ваш метод исключает исключение. Удалите условие спасения из урожая. – mdrozdziel

+3

Также не спасайте «Исключение», спасайте точные вещи, которые вы хотите. Быть общим/родовым в спасениях может привести к очень сложному обнаружению ошибок. Кроме того, когда вы спрашиваете о проблеме в вашем коде, нам нужно что-то запущенное. Пожалуйста, прочитайте «[mcve]». –

ответ

3

@agent.get(url) потерпит неудачу с плохим URL или сбоем в работе сети.

Проблема в коде может быть записан следующим образом:

def do_something 
    begin 
    raise 
    puts "I will never get here!" 
    rescue 
    end 
end 

Поскольку вы не можете избавиться от raise, что вам нужно сделать что-то внутри rescue (скорее всего, зарегистрировать ее):

begin 
    @agent.get(url) 
    # ... 
rescue Timeout::Error, Errno::EINVAL, Errno::ECONNRESET, EOFError, 
     Net::HTTPBadResponse, Net::HTTPHeaderSyntaxError, 
     Net::ProtocolError => e 
    log(e.message, e.callback) 
end 
Смежные вопросы