Библиотека собеса по PHP | вопросы с собеседований
Ссылка
нажмите — покажем
нажмите — покажем
❓ Перехватит ли catch (Exception) ошибку TypeError?
Ответ: Нет. TypeError не наследуется от Exception — он наследуется от Error.
В PHP 7 и новее Exception и Error образуют две отдельные ветки, которые реализуют общий интерфейс Throwable. Поэтому catch (Exception $e) перехватит исключения из ветки Exception, но пропустит TypeError.
Если обработчику действительно нужно принимать обе категории, используют catch (Throwable $e). Если требуется обработать только ошибку типов, можно явно указать catch (TypeError $e).
Например, строгая проверка аргумента обнаружила несовместимый тип. Обработчик Exception не сработает, а обработчик TypeError или Throwable — сработает.
При этом Throwable не превращает любой сбой процесса в перехватываемое исключение. И перехват ошибки типов не означает, что её стоит скрыть: часто она указывает на дефект программы, который нужно исправить.
Подробнее в документации PHP
🐸 Библиотека собеса по PHP
3 · 619 ·