@Kulanov

Можно ли считать большинство ошибок в PHP исключениями?

Вот не могу понять, в документации по PHP написано "большинство ошибок вызываются с помощью ИСКЛЮЧЕНИЙ класса Error". Так что теперь всё исключения? И интерфейс Throwable в целом описывает исключения? И зачем тогда обработчик ошибок который назначается через set_error_handler, если по сути мы ловим одни исключения...
Не могу найти хороший материал, где рассказывается об ошибках и т.д.
  • Вопрос задан
  • 119 просмотров
Пригласить эксперта
Ответы на вопрос 2
AgentSmith72
@AgentSmith72
JS - это моё хобби
Относитесь к этому как к оператору return, который останавливает работу программы и возвращает ответ в фронтенд.

Распространенная практика создать обработчик, который нужен чтобы проводить проверки внутри методов программы. В контроллере создаётся блок try catch, и любое исключение в бизнес логике, которое встречается в стеке вызовов методов этого контроллера, остановит программу и вернёт нужный ответ в фронтенд.

Например, при ajax запросах, исключения очерчивают границы бизнес логики. Так, если сумма равна нулю, то выбросить исключение с текстом, что сумма должна быть больше нуля и т.д.

То есть, исключения выбрасываются не только для ошибок компиляции, паркинга, синтаксиса, но и для ошибок бизнес логики.
Ответ написан
Комментировать
@Vitsliputsli
Из-за исторического наследия в php получается такая неоднозначность. В данной цитите вы все верно поняли, здесь под исключением понимаются все выбрасываемое, т.е. реализующее интерфейс Throwable и затем идет уточнение, что не все, а только то, что реализует класс Error (кроме Error интерфейс Throwable реализует также класс Exception). Т.е. есть класс Exception, а есть устоявшийся термин исключение, в который в php входят Exception и Error.
Обработчик ошибок позволит вам не писать прямо в коде обработку исключений в catch, а вынести это в отдельный блок кода. Т.е. нужно обработать конкретную ошибку - пишите catch и делайте это сразу, нужно обрабатывать похожие ошибки в различных участках кода - лучше вынести это в обработчик.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы