Have you tried to move your TCPSocket.new clause inside begin/rescue/end 
block?

Mark Probert wrote:
> Can someone please let me know what I am doing wrong here?
> I can't seem to catch the exception ..
> 
> 
> $ cat test.rb
> require 'socket'
> 
> def alive(host, port=80)
>     s = "host=#{host} : "
>     t = TCPSocket.new(host, port)
>     begin
>    s << " made it!"
>     rescue Errno::ETIMEDOUT
>           s << " Timed out -- node unreachable"
>     rescue Exception => e
>           s << " exception = #{e}"
>     ensure
>           t.close
>     end
>     return s
> end
> puts alive('10.10.10.2')
> 
> $ ruby test.rb
> test.rb:6:in `initialize': Operation timed out - connect(2) (Errno::ETIMEDOUT)
>         from test.rb:6:in `new'
>         from test.rb:6:in `alive'
>         from test.rb:19
> 
> Regards,
> 
> -mark.  (probertm at acm dot org)
>