'''''RenameMe to ContinuationsInRuby ?''''' People on BlocksInPython want to see TryCatch implemented in RubyLanguage. I won't dive in a SchemeLanguage-like continuation-based ErrorHandling, just note that this (somewhat) already exists: def routine(n) puts n throw :done if n <= 0 routine(n-1) end catch(:done) do routine(3) end ---- RubyLanguage's 'throw' and 'catch' is GoTo. GoTo has its uses, but for conventional ErrorHandling use 'raise' and 'rescue': def factorial(n) raise Argument''''''Error, "factorial arg must be >= 0: #{n}" unless n >= 0 return 1 if n.zero? (1..n).inject(1) { |product, i| product * i } end while true print 'Enter a number (-1 to quit): ' n = gets.to_i exit if n == -1 begin puts "#{n}! = #{factorial(n)}" rescue Argument''''''Error => e puts e end end ---- See also ContinuationsAreGotos, ContinuationsInPython ---- CategoryRuby