Re: [RFC] Deprecations for PHP 8.6
| From: | Osama Aldemeery | Date: | Mon, 29 Jun 2026 14:01:18 +0000 |
| Subject: | Re: [RFC] Deprecations for PHP 8.6 | ||
| References: | 1 2 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-131587@lists.php.net to get a copy of this message | ||
On Mon, Jun 29, 2026 at 1:56 PM Derick Rethans <derick@php.net> wrote:
> I think I am not in favour of the following:
>
> - Deprecate returning from a finally block
>
> If somebody uses a
return in a
> finally block, than this could just
> as well be intentional.
>
Hi Derick,
Yes, as you have probably already seen in the RFC, 9 out of the 12
instances across the top ~5000 packages
were intentional, but the proposal is not really aimed at intent.
Deprecating it takes no capability away from anyone doing this on purpose,
since the same result can still
be expressed in other ways, sometimes by just moving the return out of
the finally, but at the same time it protects
the people who do not pay attention to it (which could even be some of
those deliberately using it today, once they add a return or a throw in
the try later and its result silently disappears).
I also want to bring up again that even though I am suggesting a
deprecation, I am still genuinely interested to know whether someone
feels a warning, or even a notice, would fit better, so that if the
deprecation gets voted down we would at least have an impression of where
people stand.
The main point here is that *silently* discarding the in-flight state,
without giving a single hint about it, is a footgun, and that silent part
is really the concern here.
A return in finally quietly discarding an in-flight return value, and
more importantly an in-flight exception, so a thrown error can just
disappear with nothing reported anywhere.
Regards,
Osama