Re: [PHP-DEV] Using less generic exceptions for dates

2022-11-30 Thread Derick Rethans
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

2022-11-22 Thread Tim Düsterhus

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

2022-11-21 Thread Derick Rethans
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

2022-11-21 Thread Vincent Langlet
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 ?