Hi
On 2026-08-31 15:36, Sjoerd Langkemper wrote:
>> The Error hierarchy is not intended to be caught, though. It should
>> thus
>> use something from the Exception hierarchy.
>
> I wasn't aware of a distinction between error and exception objects
> like this. Is this documented somewhere? Is there a policy when to
> throw errors and when to throw exceptions?
Yes, in:
https://github.com/php/policies/blob/main/coding-standards-and-naming.rst#throwables
Specifically:
> The Error hierarchy MUST NOT be used for errors that are expected to be
> thrown (and caught) during normal operation of a PHP program.
>
> As an example, a parsing function that is expected to be used with
> untrusted input must not throw an Error if the input is malformed.
> Similarly a function that interacts with the network must not throw an
> Error if the network operation fails. Any Error that is thrown should
> usually result in a reasonably obvious fix in the PHP program.
> Why would these functions be used for user input more often than other
> functions? How can we determine whether a function should throw an
> exception or an error?
The quoted policy provides some examples. I'd argue that “base
conversion” falls into the “parsing function” category, because it needs
to parse the inputs. It is unreasonable for the user to perform a
pre-validation, because that effectively means reimplementing large
parts of the logic of the conversion functions.
>> > Next Friday I'll open the vote for the RFC for Throw ValueError for
>> > invalid characters in number base functions.
>>
>> From what I see this is the first email regarding this RFC
>
> The RFC was announced here:
> https://news-web.php.net/php.internals/132219
Ah. That email was a reply to an existing discussion thread though and
thus didn't create a proper top-level discussion for the RFC.
> This gave more than a month to respond to the proposal, and exactly two
> weaks for responding to the exact RFC.
Due to the above it is likely that the email was collapsed into the
discussion thread without the [RFC] tag and was thus missed by mailing
list participants - as was the case for me.
Best regards
Tim Düsterhus