Re: Change to Too Few Args Exception RFC
| From: | Niklas Keller | Date: | Sat, 06 Aug 2016 10:44:41 +0000 |
| Subject: | Re: Change to Too Few Args Exception RFC | ||
| References: | 1 2 3 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-94879@lists.php.net to get a copy of this message | ||
2016-08-06 11:53 GMT+02:00 Davey Shafik <davey@php.net>:
> On Sat, Aug 6, 2016 at 2:34 AM, Nikita Popov <nikita.ppv@gmail.com> wrote:
>
> > On Sat, Aug 6, 2016 at 4:26 AM, Davey Shafik <davey@php.net> wrote:
> >
> >> Hey all,
> >>
> >> I know this is a little late in the process, but it's something I've
> >> noticed while prepping some content around 7.1.
> >>
> >> This RFC: https://wiki.php.net/rfc/too_few_args
> >>
> >> Passed, and has been implemented, but I feel that throwing an
> >>
\Error
> >> exception is a mistake. I think we should another more concrete
> exception
> >> class for this error:
> >>
> >> \TooFewArgumentsError extends \Error
> >>
> >> A use case where this may trivially occur is where you are using
> argument
> >> unpacking and the unpacked array is too small. Writing this, just looks
> >> bad:
> >>
> >> try {
> >> foo(… $args);
> >> } catch (\Error $e) { }
> >>
> >> compared:
> >>
> >> try {
> >> foo(… $args);
> >> } catch (\TooFewArgumentsError $e) { }
> >>
> >> Thoughts? Dmitry?
> >>
> >> Given the tiny change this is, and that is backwards compatible with the
> >> original RFC, I would like to add this to 7.1 for beta3.
> >>
> >> I think I can make this change myself.
> >>
> >> - Davey
> >>
> >
> > Problem: We already use TypeError for this for internal functions. If we
> > want to introduce an extra exception for this, lets use it for internal
> > functions as well. In that case we should probably go with something that
> > applies not just to too few arguments, but also to too many.
> >
>
> Are you saying that in PHP 7.0, if you call an internal function with too
> few, or too many arguments it will emit a TypeError exception?
>
> Can you provide examples? It's obviously not every function, e.g. fopen()
> emits a Warning if you forget the second arg.
>
> With that in mind, to make this BC, TooFewArguments would have to extend
> TypeError which isn't great. Maybe, "ArgumentError" and the message will
> make it clear if it's too few or too many?
>
> - Davey
>
I don't like "ArgumentError", how about "WrongArgumentCountError"? Maybe
also "WrongArgumentsError".
Regards, Niklas