[ruby-core:75955] [Ruby trunk Bug#12482] ArgumentError.new(nil) should give a better description

From: eike@...
Date: 2016-06-11 21:41:04 UTC
List: ruby-core #75955
Issue #12482 has been reported by Eike Dierks.

----------------------------------------
Bug #12482: ArgumentError.new(nil) should give a better description
https://bugs.ruby-lang.org/issues/12482

* Author: Eike Dierks
* Status: Open
* Priority: Normal
* Assignee: 
* ruby -v: 
* Backport: 2.1: UNKNOWN, 2.2: UNKNOWN, 2.3: UNKNOWN
----------------------------------------
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

I't 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.
















-- 
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>

In This Thread

Prev Next