Actions
Feature #9400
openRespect constant lookup when using `raise`
    Feature #9400:
    Respect constant lookup when using `raise`
  
Status:
Open
Assignee:
-
Target version:
-
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