Я бы сказал, что это зависит от «ошибки». Если ошибка связана с проверкой, но ожидается в нормальном ходе событий, например, неверные учетные данные пользователя передаются в службу, которая обеспечивает аутентификацию пользователя, тогда возвращение значения перечисления, которое указывает результат запроса (Успех, Отказ и т. Д.), Вероятно, в порядке. Однако, если ошибка связана с вводом, который не должен происходить при нормальном ходе событий, я бы посоветовал вам сбросить ошибку из операции сервиса. Возникновение ошибки указывает на то, что клиентское приложение содержит ошибку и предоставило информацию, с которой служба не знает, что делать. Вы можете зарегистрировать конкретные договоры о сбоях с помощью операции службы WCF, чтобы клиентское приложение знало, что операция может вызвать одно из нескольких сбоев при определенных обстоятельствах. Клиентское приложение должно предоставлять обработчики исключений для этих сбоев и предпринимать действия в случае их возникновения, в противном случае оно неожиданно завершится.
В качестве основного эмпирического правила я бы сказал, выбрасывать ошибки при исключительных обстоятельствах, например где клиент предоставил входные данные, которые сервисная операция не ожидает получить. Если клиент предоставил информацию, которая неверна, но операция службы запрограммирована на обработку, верните код состояния или информацию в ответном сообщении.