Re: Change to Too Few Args Exception RFC

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

« previous php.internals (#94879) next »