Re: [PHP-DEV] Using less generic exceptions for dates
On Mon, 21 Nov 2022, Derick Rethans wrote: > On 21 November 2022 11:34:10 GMT, Vincent Langlet > wrote: > > > >When using json_encode or json_decode with the `JSON_THROW_ON_ERROR` > >flag, `JsonException` might be thrown. > > > >When using `new DateTime('foo')`, a generic `Exception` is thrown. > >Incidentally, I wonder why it's not an `InvalidArgumentException` > >(but that could be another debate). > > > >But my main point is that I think it would be useful to use a specific > >exception > >``` > >class DateException extends Exception {} > >``` > > > >- It allows a specific treatment when catching exceptions > >- It allows a specific analysis when using static analysis tools > > like Psalm or PHPStan. > > > >In a general way, I would say that PHP class/method should always use > >scoped Exception instead of generics ones. > > > >I know nothing about how php is implemented but I would say > >introducing DateException shouldn't be too hard and it's BC. What do > >you think ? > > I think this is a good idea and will add it to my todo list to > investigate. I have now made an RFC for this: https://wiki.php.net/rfc/datetime-exceptions cheers, Derick -- https://derickrethans.nl | https://xdebug.org | https://dram.io Author of Xdebug. Like it? Consider supporting me: https://xdebug.org/support Host of PHP Internals News: https://phpinternals.news mastodon: @derickr@phpc.social @xdebug@phpc.social twitter: @derickr and @xdebug -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: https://www.php.net/unsub.php
Re: [PHP-DEV] Using less generic exceptions for dates
Hi On 11/21/22 13:36, Derick Rethans wrote: But my main point is that I think it would be useful to use a specific exception ``` class DateException extends Exception {} ``` - It allows a specific treatment when catching exceptions - It allows a specific analysis when using static analysis tools like Psalm or PHPStan. In a general way, I would say that PHP class/method should always use scoped Exception instead of generics ones. I know nothing about how php is implemented but I would say introducing DateException shouldn't be too hard and it's BC. What do you think ? I think this is a good idea and will add it to my todo list to investigate. I agree that this is a good idea and would like to further recommend not having *just one* Exception, but several Exceptions to allow further differentiating the cause, e.g. class MalformedDateStringException extends DateException {} class UnrepresentableDateException extends DateException {} Related PR of mine to add the Exception hierarchy for PHP 8.2's ext/random: https://github.com/php/php-src/pull/9220 Best regards Tim Düsterhus -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: https://www.php.net/unsub.php
Re: [PHP-DEV] Using less generic exceptions for dates
On 21 November 2022 11:34:10 GMT, Vincent Langlet wrote: >Hi, > >When using json_encode or json_decode with the `JSON_THROW_ON_ERROR` flag, >`JsonException` might be thrown. > >When using `new DateTime('foo')`, a generic `Exception` is thrown. >Incidentally, I wonder why it's not an `InvalidArgumentException` (but that >could be another debate). > >But my main point is that I think it would be useful to use a specific >exception >``` >class DateException extends Exception {} >``` >- It allows a specific treatment when catching exceptions >- It allows a specific analysis when using static analysis tools like Psalm >or PHPStan. > >In a general way, I would say that PHP class/method should always use >scoped Exception instead of generics ones. > >I know nothing about how php is implemented but I would say introducing >DateException shouldn't be too hard and it's BC. What do you think ? I think this is a good idea and will add it to my todo list to investigate. cheers Derick -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: https://www.php.net/unsub.php
[PHP-DEV] Using less generic exceptions for dates
Hi, When using json_encode or json_decode with the `JSON_THROW_ON_ERROR` flag, `JsonException` might be thrown. When using `new DateTime('foo')`, a generic `Exception` is thrown. Incidentally, I wonder why it's not an `InvalidArgumentException` (but that could be another debate). But my main point is that I think it would be useful to use a specific exception ``` class DateException extends Exception {} ``` - It allows a specific treatment when catching exceptions - It allows a specific analysis when using static analysis tools like Psalm or PHPStan. In a general way, I would say that PHP class/method should always use scoped Exception instead of generics ones. I know nothing about how php is implemented but I would say introducing DateException shouldn't be too hard and it's BC. What do you think ?