Actions
Feature #12482
openArgumentError.new(nil) should give a better description
Status:
Open
Assignee:
-
Target version:
-
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
Like0
Like0Like0Like0