Forgive me for my ignorance but at the moment I'm struggling to figure out the best approach to catch an exception and display a message to the client based on an exception type.
My architecture:
Repository
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);
    }
}
With the above as you can see it just fetches data from the DB, but in some scenarios I could get a object not set to an instance of an object exception due to physically no data in the table or a Null exception depending on the data passed in. 
Now in both scenario I would like to generate a 404 exception which passes to my controller.
Controller
 public class PageController : ApiController
 {
   private IPageRepository _pageRepository;
   public PageController(IPageRepository pageRepository)
   {
      this._pageRepository = pageRepository;
   }
   // GET
   [HttpGet]
   [Route("")]
   public Page Get()
   {
       return this._pageRepository.FindDefault();
   }
}
My Controller hit's the method and if any of those exceptions are hit, what would be the best approach to intercept those exceptions and pass to the end client (Calling app) ?
Again apologies for the question, really trying to create some sort of systematic approach to exception handling.
Thanks for your time!
 
    