And then applied it to all actions with this line in WebApiConfig.cs:
config.Filters.Add(new GlobalExceptionFilterAttribute());
Then, throughout the app, we can throw different types of error pretty much anywhere and this will ultimately be captured by the filter attribute. So, for instance most of my service layer methods look like this: