errors/kernel_fail.rb

tests/_examples/errors/kernel_fail.rb in the metorex repository.

begin
  fail
rescue RuntimeError => error
  puts error.class
end

begin
  fail "the duck is not irish."
rescue => error
  puts error.message
end

class MissingWidget < RuntimeError
end

begin
  fail MissingWidget
rescue MissingWidget => error
  puts error.class
end

begin
  fail MissingWidget, "no widget here"
rescue MissingWidget => error
  puts error.message
end

class Builder
  def exception(message)
    StandardError.new message
  end
end

begin
  fail Builder.new, "built by hand"
rescue StandardError => error
  puts "#{error.class}: #{error.message}"
end

class Sender
  def go
    send :fail, "sent along"
  end
end

begin
  Sender.new.go
rescue RuntimeError => error
  puts error.message
end

puts Kernel.private_instance_methods.include?(:fail)

Output:

RuntimeError
the duck is not irish.
MissingWidget
no widget here
StandardError: built by hand
sent along
true