From: Robert Dober Date: 2009-08-29T03:27:44+09:00 Subject: Re: How to call this method On Fri, Aug 28, 2009 at 7:43 PM, Bertram Scharpf wrote: > >  loop { puts "x" ; loop { puts "y" ; raise StopIteration } } Wait a second, break exits a block, raise gets to the next,exception handler, in your case the one in the inner loop; thus you need to do the following loop do puts "x" lambda{ puts "y"; raise StopIteration}[] end to see what is going on In other words you did begin while true puts "x" begin while true puts "y" raise SI end rescue SI end end rescue SI end R.