Стоит ли в контроллере обрабатывать исключения?

Скажите, нужно ли в контроллере обрабатывать исключения или они должны обрабатываться глобальным хэндлером? Или он нужен только для крайних случаев?
  • Вопрос задан
  • 345 просмотров
Решения вопроса 2
JhaoDa
@JhaoDa
LaravelRUS Team
Если есть потребность, то стоит. А если нет, то не стоит.
Ответ написан
dmitry_pavlov
@dmitry_pavlov
World-class .NET freelance contractor (remotely)
Глобальные настройки обработки исключений отвечают за то, как обрабатывать их, в каком виде представлять, возвращать клиенту и тп.

Обработчики уровня actions в контроллерах - за содержание ошибки. К примеру, если у вас есть action MoveFile, который где-то там лезет во внешний сервис и пытается скачать файл и он падает по какой-то сугубо технической проблеме - таймаут у stream-а или еще что, то в конроллере имеет смысл этот Exception перехватить и завернуть во что-то более внятное:

public async Task<IActionResult> MoveFile()
{
    try {
        ...
    } catch (Exception exception) {
        throw new Exception("Moving file failed.", exception);
    }
}

В общем обработка исключений может быть многоуровневой. Например, сервис (то что раньше называли бизнес логикой) может перехватывать исключения уровня базы данных и заворачивать их в более осмысленные и перебрасывать дальше.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
dmitriylanets
@dmitriylanets
веб-разработчик
больше да чем нет
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы