errors/name_error/construction_parens.rb

tests/_examples/errors/name_error/construction_parens.rb in the metorex repository.

named = NameError.new("msg", "name")
puts(named.message)
p named.name
begin
  named.receiver
rescue ArgumentError => error
  puts(error.message)
end

symbol_named = NameError.new("msg", :name, receiver: "the receiver")
p symbol_named.name
p symbol_named.receiver

plain = NameError.new("just a message")
puts(plain.message)
p plain.name

class Caller
  def trigger
    missing_helper
  rescue NameError => error
    error
  end
end

caught = Caller.new.trigger
p caught.name
p caught.receiver.class.to_s

copied = caught.dup
p copied.name
p copied.receiver.class.to_s

Output:

msg
"name"
no receiver is available
:name
"the receiver"
just a message
nil
:missing_helper
"Caller"
:missing_helper
"Caller"