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

Предупреждения и исключения

Вопрос

Как сделать так, чтобы file_get_contents на несуществующий файл бросал исключение, а не только Warning?

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

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

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

Коротко

Правильный ответ: seterrorhandler, превращающий ошибки в ErrorException. Многие встроенные функции сообщают об ошибке предупреждением и возвращают false, исключения нет, и try/catch его не поймает.

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

  1. Обернуть вызов в try/catch (Exception) и проверить $e
  2. Поставить @ перед вызовом, тогда предупреждение станет исключением
  3. Включить display_errors, и предупреждения начнут бросаться
  4. set_error_handler, превращающий ошибки в ErrorExceptionправильный ответ

Разбор

Многие встроенные функции сообщают об ошибке предупреждением и возвращают false, исключения нет, и try/catch его не поймает. Обработчик set_error_handler может бросать ErrorException, так делают все современные фреймворки. Оператор @ только подавляет вывод, ошибка остаётся незамеченной. display_errors влияет лишь на показ.

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

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