I have a 3-layered app structured as follows. - Presentation Layer (ASP.NET MVC project) - Business Logic Layer (Services for controllers in PL) - Data Access Layer (Repositories) Each Controller in PL interacts with its service in BLL, which in turn has access to Repositories in DAL. Is it a good practice to do a "global" try-catch in the PL? That way if exception is thrown in DAL, for example, I can display the error message to the user. Or is there a better way to do this?