Project

General

Profile

Actions

Feature #9400

open

Respect constant lookup when using `raise`

Added by wardrop (Tom Wardrop) about 10 years ago. Updated over 4 years ago.

Status:
Open
Assignee:
-
Target version:
-
[ruby-core:<unknown>]

Description

When raising an error without defining an exception class, ::RuntimeError appears to be a hard-coded default. I propose that this be changed so proper constant lookup rules are respected when looking up RuntimeError. For example, I would expect both of the raise calls in this example to be identical and use the redefined RuntimeError class with the hello method:

module Test
  class RuntimeError < RuntimeError
    def hello
      puts 'Hi there!'
    end
  end

  begin
    raise RuntimeError
  rescue => e
    e.hello #=> Hi there!
  end

  begin
    raise
  rescue => e
    e.hello #=> undefined method `hello' for RuntimeError:RuntimeError
  end
end

I would find this behavior to be of quite some convenience. A lot (most?) libraries only have a single error class, and this would allow developers to implicitly raise exceptions of the appropriate class.

Thoughts?

Actions

Also available in: Atom PDF

Like0
Like0