Да, вы должны - всеми силами!
Прежде всего, неперехваченные исключения на стороне сервера будут "повреждать" канал, например. Переведите канал между клиентом и сервером в «режим паники» - звонки больше не возможны, необходимо закрыть (или прервать) канал со стороны клиента и восстановить соединение.
Во-вторых, конечно, необработанное исключение приведет к сбою кода вашего сервера - однако по умолчанию ваши вызовы WCF должны быть в любом случае «на вызов», что означает, что каждый входящий запрос будет получать совершенно новый, недавно созданный экземпляр объект вашего класса сервера, и в конце вызова он будет удален в любом случае. Так что на самом деле не все так плохо ...
В WCF есть интерфейс с именем IErrorHandler
, который вы можете реализовать на стороне вашего сервера. Он предоставляет возможность перехватывать любые исключения и превращать их в «совместимые» отказы SOAP, которые будут отправляться обратно по каналу связи, не вызывая его перехода в режим паники.
Существует несколько реализаций IErrorHandler
, которые в основном позволяют динамически подключать это как поведение службы - либо в конфигурации сервера, либо в коде класса обслуживания в качестве атрибута. Посмотрите этот пост в блоге для одного из этих примеров (есть много других - просто Google для них).