Основным параметром OperationContract моей службы является класс Preapproval. В классе Preapproval есть несколько общедоступных методов получения/установки для атрибутов DataMember. У меня есть код, который проверяет входные данные для сеттеров, так что я бы выдал исключение ArgumentException, если, скажем, параметр пуст или выходит за пределы допустимых границ для домена.
Если входные данные недействительны, я обычно выбрасываю здесь исключение ArgumentException. Поскольку это ситуация с WCF, должен ли я создавать здесь предопределенное исключение FaultException, а не ArgumentException? Я понимаю, что в другом месте я могу перехватывать общие исключения и повторно выдавать их как FaultExceptions, но это действие будет происходить выше по стеку, в некоторых работах, автоматически выполняемых WCF.
Например, когда вызывающая сторона вызывает мою службу, сериализатор десериализует свой SOAP, попытается вызвать сеттеры для моего объекта и сгенерирует исключение ArgumentException задолго до фактического вызова моей операции. Таким образом, является ли хорошей практикой проектирования в классах DataContract просто сразу генерировать исключения FaultException? Я действительно не хочу связывать пользовательский обработчик с диспетчером каналов.
Я понимаю, что могу просто генерировать FaultExceptions напрямую, но мне бы очень хотелось ограничить подобные вещи службой. Если этого нельзя избежать, я могу сделать это и в поддерживающих классах, но я бы предпочел писать как можно больше типового кода, который не так тесно связан с System.ServiceModel и т.д.
Спасибо!