mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
a3e1b1ce7e
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@11439 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
61 lines
933 B
Ruby
61 lines
933 B
Ruby
#!/usr/bin/ruby
|
|
# -*- mode: ruby -*-
|
|
# $Id: except-ruby.code,v 1.4 2004/11/13 07:41:33 bfulgham Exp $
|
|
# http://www.bagley.org/~doug/shootout/
|
|
|
|
$HI = 0
|
|
$LO = 0
|
|
NUM = 250000 # Integer(ARGV[0] || 1)
|
|
|
|
|
|
class Lo_Exception < Exception
|
|
def initialize(num)
|
|
@value = num
|
|
end
|
|
end
|
|
|
|
class Hi_Exception < Exception
|
|
def initialize(num)
|
|
@value = num
|
|
end
|
|
end
|
|
|
|
def some_function(num)
|
|
begin
|
|
hi_function(num)
|
|
rescue
|
|
print "We shouldn't get here, exception is: #{$!.type}\n"
|
|
end
|
|
end
|
|
|
|
def hi_function(num)
|
|
begin
|
|
lo_function(num)
|
|
rescue Hi_Exception
|
|
$HI = $HI + 1
|
|
end
|
|
end
|
|
|
|
def lo_function(num)
|
|
begin
|
|
blowup(num)
|
|
rescue Lo_Exception
|
|
$LO = $LO + 1
|
|
end
|
|
end
|
|
|
|
def blowup(num)
|
|
if num % 2 == 0
|
|
raise Lo_Exception.new(num)
|
|
else
|
|
raise Hi_Exception.new(num)
|
|
end
|
|
end
|
|
|
|
|
|
i = 1
|
|
max = NUM+1
|
|
while i < max
|
|
i+=1
|
|
some_function(i+1)
|
|
end
|