try catch начал ловить E_WARNING

240
08 сентября 2018, 17:10

Недавно обнаружил, что в проекте конструкции вида:

try {
    // Пример ошибки, которая в php 7.2 вызовет ошибку уровня E_WARNING
    $c = \count(null);
} catch (\RuntimeException $e) {
    // Сработает на E_WARNING: Warning: count(): Parameter must be an array or an object that implements Countable
}

стали реагировать на предупреждения E_WARNING. Что этому предшествовало: некоторое время назад была "поднята" версия php до

PHP 7.2.7 (cli) (built: Jul  3 2018 02:04:37) ( NTS MSVC15 (Visual C++ 2017) x64 )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
    with Xdebug v2.7.0alpha2-dev, Copyright (c) 2002-2018, by Derick Rethans
    with Zend OPcache v7.2.7, Copyright (c) 1999-2018, by Zend Technologies

в ini

error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED & ~E_STRICT & ~E_WARNING

и была "поднята" версия symfony до 4.1.0

Это новая фича php или где-то в symfony дополнительный хендлер, который я не нашел?

Answer 1

Это все же Symfony. В dev среде создается хендлер обработки ошибок, в котором все ошибки превращаются в фатальные

if (!$exception instanceof \Exception) {
    $exception = new FatalThrowableError($exception);
}

поэтому и срабатывает try catch на E_WARNING и E_NOTICE

READ ALSO
Как получить разделение на категории?

Как получить разделение на категории?

В базе есть записи с валютами, и у каждой валюты своя категорияВалюта и категория в одной таблице

216
Yii2. Trying to get property 'username' of non-object

Yii2. Trying to get property 'username' of non-object

Всем приветПрохожу обучение по Yii2 по книге от Bill Keck Yii2 for beginners

274
Как в blade в одну таблицу вывести 3 массива?

Как в blade в одну таблицу вывести 3 массива?

Но если выводить так записи в таблице дублируются, как этого избежать?

224
PHP: POST запрос не получает ответа от Paypal

PHP: POST запрос не получает ответа от Paypal

У меня есть код, который выполняет POST запрос и успешно получает ответ от песочницы Paypal

247