Re: [VOTE] Allowing use of exceptions in the engine
| From: | Ferenc Kovacs | Date: | Sat, 07 Dec 2013 17:05:20 +0000 |
| Subject: | Re: [VOTE] Allowing use of exceptions in the engine | ||
| References: | 1 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-70521@lists.php.net to get a copy of this message | ||
On Sat, Dec 7, 2013 at 1:57 PM, Nikita Popov <nikita.ppv@gmail.com> wrote:
> Hi internals!
>
> I opened the vote on the "Exceptions in the engine" RFC:
>
> https://wiki.php.net/rfc/engine_exceptions#vote
>
> The vote has three options, "Yes", "No" and "Yes, without
> E_RECOVERABLE_ERROR changes". The last option is a version of the proposal
> without BC issues.
>
> Some further notes:
> * I will not be including something like BaseException. Introducing it for
> this purpose seems like bad design and will be very hard to get rid of in
> the future. As the proposal (without recoverable errors) does not break BC
> [1] even without it, I don't see a reason to introduce it.
> * Some people suggest to use different subclasses of EngineException for
> different error types. I'm not against that, but I think it's okay to do
> that in a separate proposal, if someone can come up with a good selection
> of exception classes. It's much easier (and does not break BC) to add
> subclassing later, than to add suboptimal subclass types now and try to fix
> something like the SPL exception mess later.
> * The suggested uncaught exception error message change is just a bit of
> cosmetics (and not directly related to this proposal), so I'd like to do
> that separately.
>
> And regarding the vote: If you are in favor of the proposal in general, but
> want to have it in PHP 6 rather than PHP 5.6, then vote "No" here. If it
> fails now, someone can revive this once the time for PHP 6 has come.
>
> Thanks,
> Nikita
>
> [1]: We don't have a formal definition for this, but it seems to be general
> consensus that relaxing error conditions does not constitute a backwards
> compatibility break.
>
personally I have seen catch-all blocks in the wild (try {//do something}
catch(Exception $e) {//do nothing}), which would behave differently (and
some of them would screw something up instead of terminating the app) if
the EngineException is a subclass of Exception.
I can see myself supporting this proposal for 5.6, if we can have it done
in a truly BC-safe manner, but I can understand, if the required
compromises for that would make the feature too "clunky", so maybe it would
be better to introduce it in a major version.
--
Ferenc Kovács
@Tyr43l - http://tyrael.hu