Suraj Kurapati wrote:: > $ cat catch.rb > b = lambda { throw :foo } > catch :foo, &b ... > catch.rb:2:in `catch': wrong number of arguments (1 for 0) (ArgumentError) > from catch.rb:2:in `<main>' Proc object generated by lambda method is checked argument number strictly. The block which passed to catch method is called with one argument (tag). Therefore an error is occuered at Proc#call in your script (Proc#call is called with one argument, but lambda block can't accept any argument). Following script are accepted. b = lambda {|tag| p tag; throw :foo } catch :foo, &b # accepted b = proc {throw :foo } catch :foo, &b # accepted -- // SASADA Koichi at atdot dot net