Нет, вы не можете перехватить исключения до того, как они произойдут .... или чего вы действительно пытаетесь достичь ??
То, что вам нужно сделать на стороне клиента, это в основном просто защитное программирование: поместите ваши сервисные вызовы в блоки try...catch...
и обработайте исключения, которые вы можете (и хотите) обрабатывать:
MyServiceClient client = new MyServiceClient();
try
{
client.MakeYourCall();
}
catch(EndpointNotFoundException ex)
{
// tell the user the endpoint doesn't exist
}
catch(CommunicationException ex)
{
// catch the WCF base exception to handle all other WCF related issues, if needed
}
catch(TimeoutException ex)
{
// tell the user a timeout occured
}
Все связанные с WCF исключения являются потомками базового CommunicationException класса (за исключением, как я недавно узнал: QuotaExceededException ) - перехватывать более конкретные, если вы можете реагировать на них.
А также есть общесистемный TimeoutException
, который также может быть чем-то, что вы хотите поймать (это не зависит от WCF, поэтому оно не происходит от CommunicationException
)