2016-08-17 28 views
0

searchEmails(ページ)を呼び出した後、ハーベストメソッドでコードが実行されません( "put" "hey")。私はおそらくRubyの単純なものを見逃しています。なぜなら、私は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

また、「Exception」を救助しないで、あなたが望むものを救いなさい。救助の一般/ジェネリックになると、バグを見つけにくくなる可能性があります。また、コード内の問題について質問するときは、実行可能なものが必要です。 「[mcve]」をお読みください。 –

答えて

3

は、無効な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 
関連する問題