Inconsistent date errors
When using Date, if you initialize an invalid date you'll get an
Date.new(1999, 1, 32) # => ArgumentError: invalid date
This is as expected.
If you provide
nil as any of the three arguments, you do not get this error. You get three unrelated errors (two NoMethodErrors and one TypeError), none of which are specific to date:
Date.new(1999, 1, nil) # => NoMethodError: undefined method `div' for nil:NilClass Date.new(1999, nil, 32) # => TypeError: no implicit conversion from nil to integer Date.new(nil, 1, 32) # => NoMethodError: undefined method `<' for nil:NilClass
My proposal is that all invalid date initialization cases should raise
ArgumentError: invalid date or some uniform date-specific error. This would make debugging more convenient / user friendly and makes rescuing
ArgumentError actually catch all Date initialization errors. I find it weird that these internal calls error out and are exposed.