On Thu, Dec 24, 2015 at 2:40 PM, Bronisław Białek <[email protected]> wrote:
> I've just created an RFC draft for catching multiple exception types
> in one catch statement:
> https://github.com/bronek89/php-multicatch-rfc
>
> I wrote RFC on github to check if there is any positive response from
> community.
>
> Basically it introduces possibility to write code such as:
>
> try {
> // ...
> } catch (DbException | ResourceNotFoundException $e) {
> throw new HttpException("not found", 404, $e);
> } catch (\Throwable $e) {
> throw new HttpException("fail", 500, $e);
> }
>
> Provided patch is my first experience with PHP source code, so it
> could be not perfectly written (or simply poor ;-) ) .
>
> What do you think about introducing that kind of feature into PHP?
>
I think introducing union types should be a prerequisite for this as
we don't want the much more widely impactful feature of arg/return
type hinting to be constrained by syntax we choose here (and making
them inconsistent would be even worse).
That said, from a general principle point of view, it certainly
doesn't seem unreasonable. In an own-codebase one would probably use
interfaces, have each exception implement the the common denominator
(INotFound or what-have-you), but in a world of foreign components
that's not always practical.
On the other hand, one could just catch a throwable and use a pattern like this:
} catch (\Throwable $e) {
switch (true) {
case ($e instanceof DbException):
case ($e instanceof ResourceNotFoundException):
throw new HttpException("not found", 404, $e);
default:
throw new HttpException("fail", 500, $e);
}
}
So I'm not personally going to get super excited about it, even if I
would vote in favor.
-Sara
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php