Req #78357 [Opn]: DateInterval throwing more specific Exception
| From: | girgias@php.net | Date: | Sat, 07 Sep 2019 15:21:44 +0000 |
| Subject: | Req #78357 [Opn]: DateInterval throwing more specific Exception | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-222624@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=78357&edit=1
ID: 78357
Updated by: girgias@php.net
Reported by: ed at mention-me dot com
Summary: DateInterval throwing more specific Exception
Status: Open
Type: Feature/Change Request
Package: Date/time related
-Operating System: All
+Operating System:
-PHP Version: Irrelevant
+PHP Version: Next major version
-Assigned To:
+Assigned To: derick
Block user comment: N
Private report: N
New Comment:
Assigning to derick as he's the maintainer of the datetime extension.
Previous Comments:
------------------------------------------------------------------------
[2019-07-31 11:40:01] ed at mention-me dot com
Description:
------------
Apologies if that has already been considered, but I think we'd benefit from throwing a more
specific exception from a DateInterval constructor.
We have a lot of code that uses DateInterval strings that are either hardcoded strings or constants.
As per, https://www.php.net/manual/en/dateinterval.construct.php,
if the interval is invalid, an Exception is thrown. We know it's unlikely in most cases.
It'd be great if instead a different, more specific, exception could be thrown - e.g.
InvalidDateIntervalException.
It would make it clearer to see what the possible output paths from the code are, and make it easier
(for a human) to parse the code. It also makes it easier to write error handling (Catch blocks)
which are specific to this scenario.
In certain circumstances, we know the exception can't be thrown (e.g. because the DateInterval
is hardcoded/a constant) and so seeing an Exception being thrown is unhelpful.
We currently do one of the following:
- Add
@throws Exception to our function, which makes it unclear as to what the causes
of the Exception could be
- Add try { new DateInterval("P1D"); } catch (Exception $e) { return null; //or
similar } which isn't particularly nice as it makes the code quite verbose
- And I've considered using a throw new DateIntervalException($e) in the catch
block above, but we've not done it yet.
The latter would be preferred option, but it makes the code verbose and it'd be awesome if the
language could support it directly.
Thanks
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=78357&edit=1