On Thu, Dec 24, 2015 at 2:40 PM, Bronisław Białek <afte...@gmail.com> 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