Farrel Lifson wrote: > I've been playing around with rescue expressions and besides being put > on functions they also seem to work when defining classes (useful for > metaprogramming perhaps?) > > irb(main):001:0> class Test > irb(main):002:1> raise > irb(main):003:1> rescue > irb(main):004:1> puts "Error" > irb(main):005:1> ensure > irb(main):006:1* puts "Cleaned up" > irb(main):007:1> end > Error > Cleaned up > > However, why can they not be applied to do end blocks? > > irb(main):016:0> [1,2,3].each do |num| > irb(main):017:1* num.upcase > irb(main):018:1> rescue > irb(main):019:1> puts "Error" > irb(main):020:1> ensure > irb(main):021:1* puts "Clened up" > irb(main):022:1> end > SyntaxError: compile error > (irb):18: syntax error > (irb):20: syntax error > from (irb):22 > > Farrel > > rescue must be enclosed in begin/end [1,2,3].each do |num| begin #! num.upcase rescue puts "Error" ensure puts "Clened up" end end lopex