> On Mar 6, 2021, at 10:30 AM, G. P. B. <george.bany...@gmail.com> wrote:
> 
> As Rowan has addressed your first points, I'll skip them but will add a code 
> example to clarify in the RFC.
> 
> On Fri, 5 Mar 2021 at 04:26, Mike Schinkel <m...@newclarity.net 
> <mailto:m...@newclarity.net>> wrote:
> > This proposal on it's own would not be sufficient to trigger such a change
> > for extensions but in combination with another proposal to introduce a
> > `throw_on_error` declare [2] it could provide a bridge for a gradual
> > transition to the use of more exceptions internally.
> 
> Would you also consider adding a reciprocal `error_on_exception` declare?
> 
> I would not, as diagnostics (I've started to really despise the wording
> error/traditional error for E_NOTICE/E_WARNING and co) can always be elevated
> back to an exception by using a custom error handler.Now in theory the
> opposite is also true you can set an exception handler and raise an E_WARNING,
> but this is mostly a useless operation as you're already at the top of the
> execution stack.

Thank you for responding to this. However, throwing a traditional error was not 
was I was suggesting although in hindsight my choice of declare name would 
indicate exactly that.  

What I was suggesting for have a way to tell all functions that throw 
Exceptions to simply return instead.  

But after further consideration, for that to be useful I realized that such an 
approach would require more than just a directive and that is what I emailed 
you privately to consider.

> Because of that, any time a diagnostic might be emitted the VM needs to
> perform extra checks to see if it wasn't elevated to an exception and perform
> some special care handling.As such a declare which would toggle all exceptions
> to diagnostics is a very bad idea IMHO.Even if this is just limited to
> functions/methods and not language constructs, emitting a diagnostic is 
> usually
> subpar as to analyse an error one must do extra steps (reading 
> error_get_last()
> and branching, etc.)It is true that exceptions can be overused/abused,
> but they are IMHO far superior to diagnostics. 
> 
> > Although I'm not thrilled with the idea of shoving more functionality into
> > @ I don't see any other way, and thus I think it a necessary evil to
> > improve the long term health of the PHP project.
> 
> What do you see as the downside of shoving more functionality into @?  Is the 
> concern anything more than making the source for PHP more complicated to 
> maintain?
> 
> 
> Other than the BC break I think there is also the fact that the @ operator
> has a "bad" reputation and users went to great lengths to *not* use it by
> utilizing various tricks. And starting now to *promote* the usage of it again
> could be seen as a net negative by many people, especially as being able to
> use it to completely ignore any sort of Throwable error (be it a subclass
> of Error which should probably never be caught and ignored, or a subclass
> of Exception where it usually would make sense) in such an "easy" manner
> could lead to overusing exceptions for dataflow although exceptions
> (at least how my PoC is currently implemented) are still expensive to create
> just to be tossed away immediately.

Ah, good points.  Thanks.

Seems like there is a need to be able to say "Don't throw the exception, just 
return it to be so I can handle it immediately" but not require a minimum of 
five lines of try{}catch{} construct, especially if in this special case 
generating the call stack was omitted because it would clearly not be needed...?

-Mike

Reply via email to