From: "Peña, Botp" Date: 2008-04-03T12:13:18+09:00 Subject: Re: How to use "retry" into two deep begin/rescue/end ? From: Iñaki Baz Castillo [mailto:ibc@aliax.net] # loop do # begin # FIRST BEGIN # puts "welcome" # ... # ... # begin # SECOND BEGIN # raise # rescue # puts "ERROR" # retry/break/return/XXXXX # # Restart from FIRST BEGIN (doesn't work) # end # ... # ... # rescue # $stderr.print "serve(io) ERROR: " + $! # end # end # loop do # # end # def serve(io) your first begin is anchored on a loop, so you can use retry. eg, C:\family\ruby>cat test.rb loop do begin # FIRST BEGIN puts "first welcome" begin # SECOND BEGIN raise "triggered ERROR in second begin" rescue =>e puts "rescuing error: "+e.message puts "retrying to first welcome.." sleep 1 # put this to slow down next # this goes back to next loop end rescue puts "Error in first welcome" end puts "this is never executed in this example :)" end C:\family\ruby>ruby test.rb first welcome rescuing error: triggered ERROR in second begin retrying to first welcome.. first welcome rescuing error: triggered ERROR in second begin retrying to first welcome.. first welcome rescuing error: triggered ERROR in second begin retrying to first welcome.. first welcome rescuing error: triggered ERROR in second begin retrying to first welcome.. test.rb:10:in `sleep': Interrupt from test.rb:10 kind regards -botp