Issue #12063 has been reported by Yuki Kurihara.

----------------------------------------
Feature #12063: KeyError#receiver and KeyError#name
https://bugs.ruby-lang.org/issues/12063

* Author: Yuki Kurihara
* Status: Open
* Priority: Normal
* Assignee: 
----------------------------------------
I propose **KeyError#receiver** and **KeyError#name** (or KeyError#key) like NameError.

I think these method help to debug.
And will be able to find typo on did_you_mean gem.

See also https://github.com/yuki24/did_you_mean/pull/71

~~~ruby
begin
  h = {foo: 1, bar: 2}
  h.fetch(:bax)
rescue KeyError => e
  p e.receiver #=> {foo: 1, bar: 2} equal `h`
  p e.name     #=> :bax
end
~~~

~~~ruby
begin
  h = {foo: 1, bar: 2, baz: 3}
  h.fetch_values(:bar, :bax)
rescue KeyError => e
  p e.receiver #=> {foo: 1, bar: 2, baz: 3} equal `h`
  p e.name     #=> :bax
end
~~~

~~~ruby
begin
  ENV.fetch("HOEM")
rescue KeyError => e
  p e.receiver #=> ENV
  p e.name     #=> "HOEM"
end
~~~

~~~ruby
begin
  sprintf("%<foo>d", {fooo: 1})
rescue KeyError => e
  p e.receiver #=> {fooo: 1}
  p e.name     #=> :foo
end
~~~



-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>