On Mon, Apr 28, 2025, at 4:27 PM, Tim Düsterhus wrote:
> Hi
>
> On 4/28/25 23:09, Larry Garfield wrote:
>>>> * Would allowing an extension-tagging interface instead of a base class be 
>>>> an option?  It still allows for catching "anything thrown by this 
>>>> extension", which I presume is the goal.  If not, why?
>>>
>>> See the “Choice of Base Exception” section in
>>> https://github.com/php/php-src/pull/9220.
>> 
>> That seems to be about not having a common interface for both the Error and 
>> the Exception, which makes sense.  I'm talking about `interface 
>> ExampleException {}` and `interface ExampleError {}`, instead of `class 
>> ExampleException extends Exception {}`, etc.
>
> Besides not following the de facto standard (which is what this proposal 
> is trying to codify), I'm also not sure what benefit an interface would 
> have over a base exception for the problem we're trying to solve here? 
> So I can return the “why (interface)?”. It would just make it tempting 
> to extend some SPL exception :-)

It's a common recommendation in userland, as it allows implementers to extend 
an existing exception (eg, InvalidArgumentException) of their choice while 
still being tagged as coming from a given library.  Though I suppose if the 
policy doc also says to never do that, that becomes an irrelevant consideration.

--Larry Garfield

Reply via email to