Project

General

Profile

Actions

Feature #12482

open

ArgumentError.new(nil) should give a better description

Added by eike.rb (Eike Dierks) over 8 years ago. Updated over 8 years ago.

Status:
Open
Assignee:
-
Target version:
-
[ruby-core:75955]

Description

Currently:

ArgumentError.new(nil)  =>  #<ArgumentError: ArgumentError>
ArgumentError.new(nil).to_s => "ArgumentError"
ArgumentError.new(nil).inspect => "#<ArgumentError: ArgumentError>"

I want to suggest to change this to "ArgumentError(nil)" instead.

Rational:

For testing arguments, I frequently use:

raise ArgumentError.new(arg) unless ExpectedClass === arg

However when arg is nil, this raises "ArgumentError" while raising "ArgumentError(nil)" would be much nicer.

This would differentiate between ArgumentError.new() and ArgumentError.new(nil)

Suggested changes

It looks like ArgumentError#initialize inherits Exception#initialize

I'd like to suggest to differentiate between Exception.new() and Exception.new(nil)

def Exception.new(msg = :__Exception_msg_arg_undefined___)
  case arg
  when :__Exception_msg_arg_undefined___
    # msg = "ClassName"
  when nil
    # msg = "ClassName(nil)" 
  end

Impact

I believe this should not break existing code as no code should rely on the string returned.

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0