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) >