Как правило, лучше ловить исключения как можно дальше по цепочке.Таким образом, основная обязанность метода обслуживания - перехватывать различные типы исключений и определять соответствующий ответ.Углубленный код не должен просто «проглотить» исключение, если он действительно не знает, как его обработать и двигаться дальше.
Если вы хотите сделать это таким образом, определенные исключения могут сообщить коду верхнего уровня, что он долженчтобы использовать конкретную информацию для ответа, вы можете создать собственный тип исключения со свойствами, которые может проверять код перехвата исключений в методе службы.
// In your deep down code
catch (Exception e)
{
throw new ReturnErrorMessageException("The user should see this message.", e);
}
// In your service method
catch (SendErrorMessageException e)
{
Response.Message = e.UserFacingErrorMessage;
_logger.LogError("An error occurred in the web service...", e);
}