Re: [RFC] Throwable Hierarchy Policy for Extensions
| From: | Larry Garfield | Date: | Wed, 30 Apr 2025 20:12:55 +0000 |
| Subject: | Re: [RFC] Throwable Hierarchy Policy for Extensions | ||
| References: | 1 2 3 4 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-127257@lists.php.net to get a copy of this message | ||
On Wed, Apr 30, 2025, at 1:06 PM, Tim Düsterhus wrote:
> Hi
>
> On 4/30/25 15:33, Larry Garfield wrote:
>> The only time I've seen anyone use $code is in TYPO3. Their coding standards say that
>> any time you throw an exception, you use the current timestamp (determined manually) as a code.
>> That way there is a globally unique code regardless of exception type that can be grepped to find
>> the exact line it came from.
>
> To my understanding this would result in effectively identical
> exceptions having different codes, just because checking the error
> condition is split across different
if() statements for
> readability?
> That doesn't seem like a good idea - and that's why the RFC uses “cause”
> as the wording of choice.
Correct. There's 400 throw new InvalidArgumentException('...',
123456798) calls across the code base, each with a unique code number timestamp.
I didn't care for this approach either when I worked at TYPO3. :-) My point being that
I've rarely if ever seen $code used in a constructive and useful fashion.
>> […] just that it's the only time I've seen $code used in the wild...
>>
>
> PDO (for better or worse) also uses the $code for the error
> code
> returned by the database. Unfortunately it also widens the (untyped)
> $code from int to string|int, which causes some issues, since folks only
> expect int, since Exception::__construct() types the $code
> parameter
> as int.
>
> Best regards
> Tim Düsterhus
In my experience, worse. But that's another topic.
--Larry Garfield