Простите меня за мое невежество, но в данный момент я изо всех сил пытаюсь найти лучший подход для перехвата исключения и отображения сообщения клиенту на основе типа исключения.
Моя архитектура:
Репозиторий
Page IPageRepository.FindDefault()
{
try
{
return MapPageFromCategory.MapFromEntity(_context.tbl_Category.
FirstOrDefault(p =>
p.IsLandingPage == true
)
);
}
catch (Exception ex)
{
throw new ApplicationException("Error getting values from database :", ex);
}
}
С приведенным выше, как вы можете видеть, он просто извлекает данные из БД, но в некоторых сценариях я мог получить object not set to an instance of an object exception
из-за физического отсутствия данных в таблице или Null exception
в зависимости от переданных данных.
Теперь в обоих сценариях я хотел бы создать исключение 404, которое передается моему контроллеру.
Контроллер
public class PageController : ApiController
{
private IPageRepository _pageRepository;
public PageController(IPageRepository pageRepository)
{
this._pageRepository = pageRepository;
}
// GET
[HttpGet]
[Route("")]
public Page Get()
{
return this._pageRepository.FindDefault();
}
}
Мой контроллер использует метод, и если какое-либо из этих исключений сработает, как лучше всего перехватить эти исключения и передать их конечному клиенту (вызывающему приложению)?
Еще раз извиняюсь за вопрос, действительно пытаюсь создать какой-то систематический подход к обработке исключений.
Спасибо за ваше время!