Лучшие практики по отлову исключений из wcf в приложении winforms - PullRequest
0 голосов
/ 10 мая 2011

В настоящее время я изучаю способы обработки исключений и сообщаю об этом клиенту в приложении winforms, которое вызывает службу WCF (самостоятельно размещенную в службе windows). Каков наилучший способ для этого? Пара вопросов:

1) Если я разрешу распространению исключения, оно появится на стороне клиента. 2) Какой лучший способ поймать исключение на стороне клиента? Это:

catch (FaultException<T> fault) { }

(пустой блок catch только для демонстрационных целей). Или есть другой способ?

Ответы [ 2 ]

1 голос
/ 10 мая 2011

Вы всегда должны хотя бы поймать CommunicationException , из которого FaultException (и другие) происходят изКак правило, вы получите FaultException только во время разработки вашего сервиса (установите IncludeExceptionDetailInFaults для устранения ошибок при отладке).CommunicationException может произойти, когда служба не работает, среди многих других причин.Возможно, вы захотите прочитать эту статью MSDN для получения дополнительной информации об обработке ошибок в вашей службе WCF.

1 голос
/ 10 мая 2011

Вам нужно будет помещать каждый из ваших вызовов в блок try {} catch {}, поскольку именно там он будет распространяться на стороне клиента, возможно, включая некоторые возможные исключения, передаваемые через прокси-сервер какого-то типаособая обработка WCF.Используя экранирование исключений, вы также можете указать пользовательские исключения FaultExceptions и украсить метод атрибутами, чтобы разрешить отправку этого исключения клиенту.Таким образом, вы можете быть немного более умным, когда возникает исключение.например,

    try{
       ... call service
    }catch(FaultException<TimeoutFault> ex){
       .. try one more time
    }catch(FaultException<InvalidSelection> ex){
      ... show message to user from ex.Details.InvalidProperty
    }catch(FaultException){
      ... handle
    }catch (CommunicationException ex){
       ... remember this is WCF so the call itself might fail
    }catch(Exception ex){
     ... handle        
    }

Идентификатор рекомендуется читать http://blogs.msdn.com/b/pedram/archive/2008/01/25/wcf-error-handling-and-some-best-practices.aspx, поскольку он имеет несколько хороших советов /

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...