1#!/usr/bin/ruby 2# -*- mode: ruby -*- 3# $Id: except-ruby.code,v 1.4 2004/11/13 07:41:33 bfulgham Exp $ 4# http://www.bagley.org/~doug/shootout/ 5 6$HI = 0 7$LO = 0 8NUM = 250000 # Integer(ARGV[0] || 1) 9 10 11class Lo_Exception < Exception 12 def initialize(num) 13 @value = num 14 end 15end 16 17class Hi_Exception < Exception 18 def initialize(num) 19 @value = num 20 end 21end 22 23def some_function(num) 24 begin 25 hi_function(num) 26 rescue 27 print "We shouldn't get here, exception is: #{$!.type}\n" 28 end 29end 30 31def hi_function(num) 32 begin 33 lo_function(num) 34 rescue Hi_Exception 35 $HI = $HI + 1 36 end 37end 38 39def lo_function(num) 40 begin 41 blowup(num) 42 rescue Lo_Exception 43 $LO = $LO + 1 44 end 45end 46 47def blowup(num) 48 if num % 2 == 0 49 raise Lo_Exception.new(num) 50 else 51 raise Hi_Exception.new(num) 52 end 53end 54 55 56i = 1 57max = NUM+1 58while i < max 59 i += 1 60 some_function(i+1) 61end 62