Maybe I'm not understanding what you are getting at, but:

irb(main):001:0> loop do
irb(main):002:1*   begin
irb(main):003:2*     raise 666
irb(main):004:2>   rescue
irb(main):005:2>     puts "rescue"
irb(main):006:2>     raise
irb(main):007:2>   end
irb(main):008:1> end
rescue
TypeError: exception class/object expected
        from (irb):3:in `raise'
        from (irb):3
        from (irb):1:in `loop'
        from (irb):8


Seems to work fine... if you get the syntax right!  As I understand it,
"begin...rescue...end" is the construct, just like "class...end" or
"def...end".  None of these are blocks, though, just different language
constructs.

Or perhaps you meant something I am missing?

Chris