errors/raised_position.rb

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

# An exception the interpreter raises carries the stack it was raised on,
# which `$@` reads for the one being handled.
held = (1 / 0 rescue $!)
p(held.class)
p(held.backtrace.class)
p((1 / 0 rescue $@).class)

# A namespaced error is placed by its ancestors, so `SystemCallError` catches
# the Errno classes under it.
begin
  File.read("/no/such/path/at/all")
rescue SystemCallError => problem
  p(problem.class)
end

Output:

ZeroDivisionError
Array
Array
Errno::ENOENT