Карточка Junior Исключения и ошибки обновлено

Ошибки и исключения в PHP

Вопрос

Чем ошибки (E_WARNING, E_NOTICE) отличаются от исключений?

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

Ответьте про себя или вслух, потом откройте ответ и сверьтесь.

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

Коротко

Ошибки уровня E выводятся и логируются, но не прерывают выполнение (кроме фатальных) и не ловятся try/catch. Исключения прерывают выполнение до ближайшего подходящего catch. seterrorhandler + ErrorException превращают ошибки в исключения.

Ответ

Ошибки уровня E_* выводятся и логируются, но не прерывают выполнение (кроме фатальных) и не ловятся try/catch. Исключения прерывают выполнение до ближайшего подходящего catch. set_error_handler + ErrorException превращают ошибки в исключения. В PHP 8 многие предупреждения стали TypeError и ValueError.

Разбор

В продакшене display_errors=Off, log_errors=On: детали ошибок не должны попадать в ответ.

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

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