Исключения и контроль ошибок

Подходы к контролю исключительных ситуаций. Использование исключений и корректный ох отлов.

Скрытый контент
Комментарии (11)
voodooism

Было бы хорошо если бы к видео отдельно прикладывались слайды

Ответить
Александр

значит ли что в MVC в большинстве случаях, trow (выброс) создается в моделях, отлавливается в контроллере, контроллер формирует нужную строку или массив или объект, и передает в вид, ну или возвращает аякс запросу объект, для последующего вывода в удобном формате на фронте ?

А если в самом контроллере(или там в скрипте для процедурного стиля) создавать trow , то как правильно его в этом же контроллере обработать через try-catch , и вобще правильный ли такой подход все в одном файле ?

Ответить
Дмитрий Елисеев

В общем случае throw кидается всегда чем-то внутренним, а вверху либо отлавливается в контроллере или посреднике (чтобы сформировать красивый ответ с ошибкой), либо перехватывается самим фреймворком и пишется в логи, выводя ответ 500 Server Error.

Ответить
Александр

Дмитрий, спасибо вам! Если вас не затруднит, не могли бы ли вы рассказать про логирование?

Ответить
Артем

Понравилось "выкинуть на улицу")

Ответить
Ruslan

Кадр 44:44 акшен в контролере . Мы так во флэш выбросим сообщение. А что будет с рендером? - Вывод об ошибке на всю страницу и потеря всех заполненных данных? Чтоб этого не было должны ли мы передать наш шаблон с переменной $form ?

Ответить
Дмитрий Елисеев

После флэша экшен не прерывается и выводится тот же $this->render со всеми данными формы. И над формой выводим блок с флэш-сообщением.

Ответить
Ruslan

Спасибо. Видно затмение в мозгу, решил, что после catch код исполняться не будет.

Ответить
Джамал

Здравствуйте, такой вопрос. Часто в API проектах наблюдаю такой класс ClientException и в нем есть метод render в котором написан код который отдает ошибку в виде json. Является ли это хорошей практикой ? Если нет, то лучше ловить ClientException и в блоке catch отдавать ответ в виде json?

Ответить
Дмитрий Елисеев

Это не всегда удобно.

Если нужно выводить ошибку как-нибудь по-своему, то тогда встроенный метод render не подойдёт.

Ответить
Джамал

Спасибо!

Ответить
Зарегистрируйтесь или войдите чтобы оставить комментарий

Или войти через:

Google
GitHub
Yandex
MailRu