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