ruby-gsl Sample: error.rb


#!/usr/local/bin/ruby


require "GSL"
include GSL

# how to use error handling

def show(str, x, res)
  if res.class == Result
    printf "  %s(%g) = %g (err = %g)\n", str, x, res.val, res.err
  else
    printf "  %s(%g) = %g\n", str, x, res
  end
end

STDERR.puts "Error handling..."

puts "\nThis is ok:"
x = 7.001
r = Special::Legendre::Q1(x)
show "Q1", x, r

puts "\nFor Legendre::Q1(x) the x argument must be != 1"
x = 1

puts "\nTurn off error handling:"
GSL::set_handler(ERR_OFF)
r = Special::Legendre::Q1_e(x)
show "Q1_e", x, r

puts "\nCatch GSL exception:"
GSL::set_handler(ERR_RUBY)
begin
  r = Special::Legendre::Q1_e(x)
  show "Q1_e", x, r
rescue GSLException
  puts "Ouch: #{$!}"
end

puts "\nThis will abort the program:"
GSL::set_handler(ERR_INTERN)
r = Special::Legendre::Q1_e(x)
show "Q1_e", x, r

STDERR.puts "\ndone."


Back