From: Tom@..., Wardrop@... Date: 2014-01-12T05:03:53+00:00 Subject: [ruby-core:59700] [ruby-trunk - Bug #9400] (Open) Respect constant lookup when using `raise` Issue #9400 has been reported by Tom Wardrop. ---------------------------------------- Bug #9400: Respect constant lookup when using `raise` https://bugs.ruby-lang.org/issues/9400 * Author: Tom Wardrop * Status: Open * Priority: Normal * Assignee: * Category: * Target version: * ruby -v: 2.1.0 * Backport: 1.9.3: UNKNOWN, 2.0.0: UNKNOWN, 2.1: UNKNOWN ---------------------------------------- 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? -- http://bugs.ruby-lang.org/