Почему я не могу поймать эту ошибку в PHP (вызов функции с логическим значением)?

У меня была проблема, которая в конечном итоге сводилась к тому, что я не проверял, что значение было ложным, прежде чем продолжить.

Я попытался попробовать / уловить его для отладки, но, как ни странно, это не помогло.

Вот минимальный пример:

    try
    {
        $test = false;
        $test->format('Y-m-d');
    }

    catch (\Exception $e)
    {

    }

Журнал ошибок показывает, что это фатальная ошибка. Есть ли у PHP документация о том, почему при этом не возникает нормальная ошибка?

попробуйте catch (Error $ e) {... или для всего catch (Throwable $ e) {...

Eakethet 20.07.2018 09:21

@Philipp - Мой вопрос больше о том, почему этот конкретный код выдает ошибку, а не исключение, и документирован ли он где-либо.

Pikamander2 20.07.2018 09:46
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
2
96
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Это вызывает "нормальную" ошибку, но ошибки не являются экземпляром Exception, это отдельная ветвь объектов. Общим предком для Exception и Error является Throwable, и вы можете захотеть его использовать.

Ваш блок catch должен выглядеть так

catch (\Throwable $e)
{
    // do stuff
}

или если вы хотите ловить только ошибки

catch (\Error $e)
{
    // do stuff
}

Также обратите внимание, что до Ошибки и исключения PHP7 были две разные вещи и обрабатывались по-разному. Ошибки нельзя отловить с помощью блока try-catch, необходимо использовать обработчик ошибок, проверьте set_error_handler

Другие вопросы по теме