Доброго дня! Пишу сайт на паттерне MVC. Есть модели, вьюхи, контроллеры. Как правильно работать с исключениями в такой ситуации? Исключения выбрасывать в моделях, а обрабатывать в контроллерах?
изюминка в том, что исключение позволяет выйти из функции не в то же место в коде, где она была запущена, и сообщить о невозможности выполнения этой функции.
Исключения выбрасываются там, где произошла исключительная (ненормальная) ситуация. Ваш КО. Может быть и в модели, и в контроллере, и в промежуточных слоях. Разве что в View не стоит этого делать К моменту, когда формируется вывод, уже не должно быть исключительных ситуаций
Или в том, что можно повесить обработчик исключений(set_exception_handler()) и в случае, если у тебя, например, маршрут не найден(404NotFoundHttpException), или к базе не получается подключиться (т.к. в конфиге неправильный логин/пароль), то можешь показывать пользователю красивую страничку, что программа не может корректно отработать.
@igordata не только сообщить, но и попытаться устранить проблему если такого возможно. Допустим: Произвести множественную запись в бд включив транзакцию. Если вдруг создается ошибка, ловим исключением и откатываем все что добавляли ( rollback ) например
нууууу исключение само по себе ничего не пытается и не устраняет задача устранения проблемы может и не стоять ташто, я предпочитаю считать, что исключения - они только для перехода в место принятия решения и возможности передачи некой информации принимающему решение коду. А устранять или нет, как устранять - это уже дальше происходит.