У меня была проблема, которая в конечном итоге сводилась к тому, что я не проверял, что значение было ложным, прежде чем продолжить.
Я попытался попробовать / уловить его для отладки, но, как ни странно, это не помогло.
Вот минимальный пример:
try
{
$test = false;
$test->format('Y-m-d');
}
catch (\Exception $e)
{
}
Журнал ошибок показывает, что это фатальная ошибка. Есть ли у PHP документация о том, почему при этом не возникает нормальная ошибка?
@Philipp - Мой вопрос больше о том, почему этот конкретный код выдает ошибку, а не исключение, и документирован ли он где-либо.






Это вызывает "нормальную" ошибку, но ошибки не являются экземпляром Exception, это отдельная ветвь объектов. Общим предком для Exception и Error является Throwable, и вы можете захотеть его использовать.
Ваш блок catch должен выглядеть так
catch (\Throwable $e)
{
// do stuff
}
или если вы хотите ловить только ошибки
catch (\Error $e)
{
// do stuff
}
Также обратите внимание, что до Ошибки и исключения PHP7 были две разные вещи и обрабатывались по-разному. Ошибки нельзя отловить с помощью блока try-catch, необходимо использовать обработчик ошибок, проверьте set_error_handler
попробуйте catch (Error $ e) {... или для всего catch (Throwable $ e) {...