сразу оговорюсь, у меня ASP.NET MVC приложение, но суть не в этом
например, есть метод:
public Portal Portal(int PortalID)
{
var q = from i in _dataContext.Portals where i.PortalID == PortalID select i;
return q.FirstOrDefault();
}
потом есть метод в классе-репозитории:
public void PortalCategories(int PortalID)
{
Models.Portal portal = Portal(PortalID);
// тут какие-то действия, производящиеся над порталом
}
и наконец метод в контроллере:
public ActionResult PortalCategories(int PortalID)
{
_repository.PortalCategories(PortalID);
return View();
}
мне нужно поймать если переданное ID некорректно, т.е. Portal(PortalID) вернуло нулл.
Я могу:
1. добавить ещё одну строчку в метод контроллера с проверкой. Тогда этот метод будет выглядеть типа:
public ActionResult PortalCategories(int PortalID)
{
Models.Portal portal = Portal(PortalID);
if (portal!=null)
{
_repository.PortalCategories(PortalID);
}
else
{
//write to log
}
return View();
}
всё хорошо, только лишний запрос к БД.
2. добавить проверку в метод репозитория. Но тогда нужно либо что-то возвращать либо кидать вверх эксепшн (хотя он и сам кинется), а в методе контроллера его ловить. Или есть ещё путь? Как правильно?