在服务器端有IErrorHandler等。
在客户端上,当您在频道上调用方法时会抛出异常。
有没有办法在调用方法时抛出客户端上的异常?
答案 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
下降)