Re: [RFC] Optional Catch Block Body
| From: | Rob Landers | Date: | Fri, 08 Aug 2025 06:59:55 +0000 |
| Subject: | Re: [RFC] Optional Catch Block Body | ||
| References: | 1 2 3 4 5 6 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-128431@lists.php.net to get a copy of this message | ||
On Fri, Aug 8, 2025, at 08:50, Rob Landers wrote:
> On Fri, Aug 8, 2025, at 07:57, Mihail Liahimov wrote:
>> Yeah, it seems to be problematic to use this syntax with finally blocks. Perhaps the
>> optional catch block should be allowed only at the very end, but it sounds somehow doubtful.
>>
>> ср, 6 авг. 2025 г. в 16:52, Andreas Heigl <andreas@heigl.org>:
>>> Hey Mihail
>>>
>>> Am 06.08.25 um 13:34 schrieb Mihail Liahimov:
>>> > Hi!
>>> >
>>> > At the moment, I can suggest this syntax:
>>> >
>>> > try {
>>> > // do something
>>> > } catch (SomeIgnorableException) finally {
>>> > // do something
>>> > }
>>> >
>>> I find that ... challenging
>>>
>>> When reading the code I now have to go to the end of the line to
>>> understand that the second
>>>
>>> // do something
>>>
>>> does not belong to the
try but to the
>>> finally...
>>>
>>>
>>> And
>>>
>>> try {
>>> // break stuff
>>> } catch (SomeIgnorableException)
>>> finally {
>>> // do something regardless
>>> }
>>>
>>> seems boken due to the missing }
>>>
>>> But well....
>>>
>>> We just have to adapt to something like this:
>>>
>>> try {
>>> // break stuff
>>> }
>>> catch (SomeIgnorableException)
>>> catch (Some OtherIgnorableException)
>>> finally {
>>> // do something regardless
>>> }
>>>
>>> --
>>> ,,,
>>> (o o)
>>> +---------------------------------------------------------ooO-(_)-Ooo-+
>>> | Andreas Heigl |
>>> | mailto:andreas@heigl.org N
>>> 50°22'59.5" E 08°23'58" |
>>> | https://andreas.heigl.org
>>> |
>>> +---------------------------------------------------------------------+
>>> | https://hei.gl/appointmentwithandreas
>>> |
>>> +---------------------------------------------------------------------+
>>> | GPG-Key: https://hei.gl/keyandreasheiglorg
>>> |
>>> +---------------------------------------------------------------------+
>
> What about instead of at the end, we do it at the beginning?
>
> try ignore (SomeIgnorableException, OtherException) {
> // break stuff
> } catch(UnexpectedException) {
> // fix stuff
> } finally {
> // do this anyway
> }
>
> Since ignore only can follow a try and any symbol other than a "{" is currently an
> error, I don't think we don't need to reserve "ignore" as a keyword.
>
> It appears to be relatively easy to scan/read as well.
>
> — Rob
Sorry, it should have read: "I don't think we need to reserve "ignore" as a
keyword".
— Rob