Карточка 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 ошибок.