mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	consistency. Approved by ko1. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37192 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
		
			
				
	
	
		
			61 lines
		
	
	
	
		
			874 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			61 lines
		
	
	
	
		
			874 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
 |