Где необходимо отлавливать исключения в приложении asp.net mvc? Например у меня есть функция в сервисе, которая использует базу данных:
public async Task
Если будет ошибка подключения к базе данных будет исключение. Его можно обработать обойти в репозитории, например так:
public async Task
try
{
return await _entities.FirstOrDefaultAsync(e => e.Id == key);
}
catch { }
return result;
}
Или в сервисе, например так:
public async Task
return result;
}
Или в контроллере, например так:
public async Task
return View(applicationUser);
}
Можно вообще не отлавливать исключение, тогда при ошибке пользователь увидит это:
Где и как нужно обрабатывать исключения при работе с базой данных и нужно ли вообще их обрабатывать?
Ответ
Исключения надо обрабатывать там, где их может обработать прикладная логика.
Обрабатывать в репозитории - не рекомендуется, никакой код не сможет
узнать, почему он не получил сущность.
Обрабатывать в сервисе - уже вполне можно, возможно сервис должен
создавать новую сущность, если не найдена нужная - это уже ваша
логика и вам решать, как себя вести.
В контроллере обработка тоже вполне допустима. Только вам самому надо
решить, что это исключение значит и как на него реагировать.
Контроллер - это уже выход на пользователя. Т.е. лучше предоставить
пользователю информацию - что случилось, кто виноват и что с этим
можно сделать. Просто "Ошибка" обычно абсолютно бесполезна.
Комментариев нет:
Отправить комментарий