Re: RFC - making the Exception class abstract
| From: | Anthony Ferrara | Date: | Wed, 17 Jun 2015 21:30:27 +0000 |
| Subject: | Re: RFC - making the Exception class abstract | ||
| References: | 1 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-86737@lists.php.net to get a copy of this message | ||
Kevin,
On Wed, Jun 17, 2015 at 4:41 PM, Kevin Bradwick <kevinbradwick@gmail.com> wrote:
> Hello!
>
> This is my first post to the internals list so please forgive me if I have
> not followed the rules precisely!
>
> I've had an idea to improve how developers use exceptions within PHP. I'd
> like to add an RFC but as per the instructions on the site
> <https://wiki.php.net/rfc/howto>, I am sending this email
> first gauge
> reaction as an initial idea.
>
> The idea is to change the base Exception
> <http://php.net/manual/en/class.exception.php> class to
> be abstract. The
> reason for this is to encourage developers to extend it to create meaning
> exceptions or use the standard SPL exceptions. The documentation states
> that it's the base class for all exceptions, which kind of encourages my
> thought process.
>
> Too many times have I seen developers throwing Exceptions when what they
> really needed was something that gave it context like
> InvalidArgumentException or RuntimeException. Yes, I agree this is
> something to tackle at code review (and I do) but I feel PHP doesn't help
> the situation by making it an instantiatable class. I struggle to think of
> a valid reason where it makes sense to throw the root Exception class.
> Catching the root Exception class is a different matter and there are
> perfectly valid cases for doing it.
>
> So, what does everyone think? Is it worth me pursing the RFC with full
> details of the idea or am I on my own with this one?
>
> Many thanks!
> Kevin
Changing the existing Exception class to be abstract would break a
metric ton of code. Simply on that metric alone it would be a hard
sell. I think you'd need an exceptionally strong justification for it,
beyond "using typed exceptions is better".
Instead, I think we should solve the problem with education. Perhaps
the documentation can better detail out why devs shouldn't directly
throw exception but instead use typed exceptions...?
My $0.02 at least...
Anthony