errors/key_error/named_arguments_parens.rb

tests/_examples/errors/key_error/named_arguments_parens.rb in the metorex repository.

error = KeyError.new(receiver: "lookup source", key: :b)
p error.receiver
p error.key
puts(error.message)

described = KeyError.new("key not found: :b", receiver: "lookup source", key: :b)
puts(described.message)
p described.key

plain = KeyError.new("no lookup recorded")
begin
  plain.key
rescue ArgumentError => error
  puts(error.message)
end
begin
  plain.receiver
rescue ArgumentError => error
  puts(error.message)
end

frozen = FrozenError.new("can't modify", receiver: "text")
p frozen.receiver
puts(frozen.message)

Output:

"lookup source"
:b
KeyError
key not found: :b
:b
no key is available
no receiver is available
"text"
can't modify