# Can't rescue this (http-access2)

**URL:** <https://rubytalk.org/t/cant-rescue-this-http-access2/24337>\
**Category:** ruby-talk\
**Created:** [25 January 2006 04:46 UTC](https://rubytalk.org/t/cant-rescue-this-http-access2/24337 "2006-01-25T04:46:56Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![Horacio\_Sanson1](https://avatars.discourse-cdn.com/v4/letter/h/e480ec/32.png) [@Horacio\_Sanson1](https://rubytalk.org/u/Horacio_Sanson1)\
**Post date:** [25 January 2006 04:46 UTC](https://rubytalk.org/t/cant-rescue-this-http-access2/24337/1 "2006-01-25T04:46:56Z")

</div>

I have a code like this

def connect(redirect=3)

&nbsp;&nbsp;&nbsp;&nbsp;# Do we have a url to process do we?? if not simply return  
&nbsp;&nbsp;&nbsp;&nbsp;if not @uri  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return nil  
&nbsp;&nbsp;&nbsp;&nbsp;end

&nbsp;&nbsp;&nbsp;&nbsp;begin  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@clnt = HTTPAccess2::Client.new()  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@clnt.set\_cookie\_store("cookie.dat")  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@resp = @clnt.get(@uri)  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@code = @resp.status.to\_s  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@message = @resp.reason  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rescue SocketError  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@code = "404"  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@message = "Not Found"  
&nbsp;&nbsp;&nbsp;&nbsp;rescue Exception =\> e  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;puts "#{self.class} Exception connecting to #{@uri.to\_s} : #{e.to\_s}"  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@code = "408"  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@message = e.to\_s  
&nbsp;&nbsp;&nbsp;&nbsp;end  
&nbsp;&nbsp;&nbsp;&nbsp;  
&nbsp;&nbsp;&nbsp;@resp  
end

this works as expected but some times (not always) I get an error and the  
scripts bails out.

c:/ruby/lib/ruby/site\_ruby/1.8/http-access2.rb:1466:in `gets': Invalid  
argument (Errno::EINVAL)  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from c:/ruby/lib/ruby/site\_ruby/1.8/http-access2.rb:1466:in  
`parse\_header'  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from c:/ruby/lib/ruby/site\_ruby/1.8/http-access2.rb:1464:in `timeout'  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from c:/ruby/lib/ruby/1.8/timeout.rb:55:in `timeout'  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from c:/ruby/lib/ruby/site\_ruby/1.8/http-access2.rb:1464:in  
`parse\_header'  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from c:/ruby/lib/ruby/site\_ruby/1.8/http-access2.rb:1422:in  
`read\_header'  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from c:/ruby/lib/ruby/site\_ruby/1.8/http-access2.rb:1254:in  
`get\_status'  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from c:/ruby/lib/ruby/site\_ruby/1.8/http-access2.rb:466:in  
`do\_get\_header'  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from c:/ruby/lib/ruby/site\_ruby/1.8/http-access2.rb:436:in  
`do\_get\_block'  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;... 6 levels...  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from ./scrapper.rb:1000:in `start'  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from ./scrapper.rb:984:in `each'  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from ./scrapper.rb:984:in `start'  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from main.rb:208

I think I am rescuing all possible things that could go wrong here so my  
script should continue ignoring this error but the scripts stops.

How can I rescue this??

regards  
Horacio

---

<div class="post-metadata">

**Author:** ![Stefan\_Mahlitz](https://avatars.discourse-cdn.com/v4/letter/s/bb73d2/32.png) [@Stefan\_Mahlitz](https://rubytalk.org/u/Stefan_Mahlitz)\
**Post date:** [26 January 2006 19:54 UTC](https://rubytalk.org/t/cant-rescue-this-http-access2/24337/2 "2006-01-26T19:54:47Z")

</div>

Horacio Sanson wrote:

> I have a code like this
> 
> def connect(redirect=3)
> 
> &nbsp;&nbsp;&nbsp;&nbsp;# Do we have a url to process do we?? if not simply return  
> &nbsp;&nbsp;&nbsp;&nbsp;if not @uri  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return nil  
> &nbsp;&nbsp;&nbsp;&nbsp;end
> 
> &nbsp;&nbsp;&nbsp;&nbsp;begin  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@clnt = HTTPAccess2::Client.new()  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@clnt.set\_cookie\_store("cookie.dat")  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@resp = @clnt.get(@uri)  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@code = @resp.status.to\_s  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@message = @resp.reason  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rescue SocketError  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@code = "404"  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@message = "Not Found"  
> &nbsp;&nbsp;&nbsp;&nbsp;rescue Exception =\> e  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;puts "#{self.class} Exception connecting to #{@uri.to\_s} : #{e.to\_s}"  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@code = "408"  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@message = e.to\_s  
> &nbsp;&nbsp;&nbsp;&nbsp;end  
> &nbsp;&nbsp;&nbsp;&nbsp;  
> &nbsp;&nbsp;&nbsp;@resp  
> end
> 
> this works as expected but some times (not always) I get an error and the  
> scripts bails out.
> 
> c:/ruby/lib/ruby/site\_ruby/1.8/http-access2.rb:1466:in `gets': Invalid  
> argument (Errno::EINVAL)  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from c:/ruby/lib/ruby/site\_ruby/1.8/http-access2.rb:1466:in  
> `parse\_header'  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from c:/ruby/lib/ruby/site\_ruby/1.8/http-access2.rb:1464:in `timeout'  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from c:/ruby/lib/ruby/1.8/timeout.rb:55:in `timeout'  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from c:/ruby/lib/ruby/site\_ruby/1.8/http-access2.rb:1464:in  
> `parse\_header'  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from c:/ruby/lib/ruby/site\_ruby/1.8/http-access2.rb:1422:in  
> `read\_header'  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from c:/ruby/lib/ruby/site\_ruby/1.8/http-access2.rb:1254:in  
> `get\_status'  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from c:/ruby/lib/ruby/site\_ruby/1.8/http-access2.rb:466:in  
> `do\_get\_header'  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from c:/ruby/lib/ruby/site\_ruby/1.8/http-access2.rb:436:in  
> `do\_get\_block'  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;... 6 levels...  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from ./scrapper.rb:1000:in `start'  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from ./scrapper.rb:984:in `each'  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from ./scrapper.rb:984:in `start'  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from main.rb:208
> 
> I think I am rescuing all possible things that could go wrong here so my  
> script should continue ignoring this error but the scripts stops.
> 
> How can I rescue this??

a simple

rescue =\> e

should work as Errno is derived from SystemCallError (which inherits  
from StandardError).

See Pickaxe II page 108 for details.

Actually I don't know why catching Exception doesn't work.
