# Mechanize Timeout Exception - How To?

**URL:** <https://www.ruby-forum.com/t/mechanize-timeout-exception-how-to/130098>\
**Category:** Ruby\
**Created:** [February 25, 2008, 11:55am UTC](https://www.ruby-forum.com/t/mechanize-timeout-exception-how-to/130098 "2008-02-25T11:55:20Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![learningruby](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/6bbea6/32.png) [@learningruby](https://www.ruby-forum.com/u/learningruby)\
**Post date:** [February 25, 2008, 11:55am UTC](https://www.ruby-forum.com/t/mechanize-timeout-exception-how-to/130098/1 "2008-02-25T11:55:20Z")

</div>

Hi all,

```
     I am very new at scraping and using mechanize. Its all a smooth

```

run until I faced this problem of handling Timeout while fetching a web  
page.

The Timeout::timeout() is unable to rescue this kind of errors. Here is  
my code

require ‘timeout’  
require ‘rubygems’  
require ‘mechanize’

agent = WWW::Mechanize.new  
begin  
Timeout::timeout(10) do  
agent.get(‘[http://www.r-knowsys.com](http://www.r-knowsys.com)’) #this url doesn’t exist  
end  
rescue Timeout::Error  
puts “timeout the page doesnt exist”  
end  
and when I run it, the error stack is as followed

/usr/lib/ruby/1.8/net/http.rb:560:in `initialize': getaddrinfo: Name or service not known (SocketError) from /usr/lib/ruby/1.8/net/http.rb:560:in `open’  
from /usr/lib/ruby/1.8/net/http.rb:560:in `connect' from /usr/lib/ruby/1.8/timeout.rb:48:in `timeout’  
from /usr/lib/ruby/1.8/timeout.rb:76:in `timeout' from /usr/lib/ruby/1.8/net/http.rb:560:in `connect’  
from /usr/lib/ruby/1.8/net/http.rb:553:in `do_start' from /usr/lib/ruby/1.8/net/http.rb:542:in `start’  
from  
/usr/lib/ruby/gems/1.8/gems/mechanize-0.6.4/lib/mechanize.rb:352:in  
`fetch_page' from /usr/lib/ruby/gems/1.8/gems/mechanize-0.6.4/lib/mechanize.rb:143:in `get’  
from test.rb:8  
from /usr/lib/ruby/1.8/timeout.rb:56:in `timeout’  
from test.rb:7

> Exit code: 1

How do I handle such a case? Any help appreciated.

regards,  
venkat

---

<div class="post-metadata">

**Author:** ![learningruby](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/6bbea6/32.png) [@learningruby](https://www.ruby-forum.com/u/learningruby)\
**Post date:** [February 25, 2008, 12:02pm UTC](https://www.ruby-forum.com/t/mechanize-timeout-exception-how-to/130098/2 "2008-02-25T12:02:08Z")

</div>

Hi,

Indeed, the problem here isn’t that the request is timing out - it’s  
failing  
within 10 seconds. You need to catch a SocketError - it can’t find the  
site  
[www.r-knowsys.com](http://www.r-knowsys.com), so it fails with a SocketError instead.

Cheers,  
Arlen.

---

<div class="post-metadata">

**Author:** ![learningruby](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/6bbea6/32.png) [@learningruby](https://www.ruby-forum.com/u/learningruby)\
**Post date:** [February 27, 2008, 9:22am UTC](https://www.ruby-forum.com/t/mechanize-timeout-exception-how-to/130098/3 "2008-02-27T09:22:11Z")

</div>

Hi Arlen,

Thanks a lot…That worked. Seems that I need to go into the diffs of  
socket error/ timeout error…

Cheers…  
Venkat
