如何拦截客户端的WCF错误

时间:2010-06-10 07:58:20

标签: .net wcf

在服务器端有IErrorHandler等。

在客户端上,当您在频道上调用方法时会抛出异常。

有没有办法在调用方法时抛出客户端上的异常?

1 个答案:

答案 0 :(得分:0)

不,你不能在它们发生之前拦截例外......或者你真正想要实现的是什么?

您在客户端需要做的事情基本上就是防御性编程:将您的服务调用放入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下降)