Выбор ответа Middle Исключения и ошибки спрашивают часто обновлено

Exception и Error

Вопрос

Почему catch (Exception $e) не поймает вызов метода у null?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Это Error, а Error и Exception независимо реализуют Throwable. С PHP 7 фатальные ошибки движка стали исключениями класса Error (TypeError, ValueError, ArithmeticError, DivisionByZeroError).

Варианты ответа

  1. Такие ошибки вообще нельзя перехватить, скрипт просто завершится
  2. Это Error, а Error и Exception независимо реализуют Throwableправильный ответ
  3. Нужно включить error_reporting(E_ALL), иначе исключение не бросится
  4. Exception ловит только пользовательские, а не встроенные исключения

Разбор

С PHP 7 фатальные ошибки движка стали исключениями класса Error (TypeError, ValueError, ArithmeticError, DivisionByZeroError). Error не наследует Exception, оба реализуют интерфейс Throwable. Поймать всё можно через catch (Throwable $e). error_reporting управляет предупреждениями, а не исключениями. Exception ловит и встроенные исключения вроде JsonException.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.