Melhor lugar para try catch

Olá pessoal, estou escrevendo uma aplicação em C# com MVC 5, e tenho lá minha camada DAL que faz acesso a base de dados, tenho uma camada responsável pela regra de negócio da aplicação, e a camada da aplicação com Razor, pra apresentação.

O caso é, tenho um request que chama meu controller da Razor, esse controle faz uma chamada a uma determinada regra de negócio e essa regra faz uma chamada pra camada DAL que realiza o acesso no banco, onde trato uma exceção caso tenha problemas? Por exemplo, se não consigo realizar a conexão com o banco, essa exception deve ser tratada na camada DAL? Se sim, dou um throw, crio uma exception, retorno um objeto vazio ou nulo? Estou tentando procurar um melhor lugar pra não impactar muito na leitura do código e nem encher a aplicação de try catch que poderiam ser evitados…