如何从CompletedEventArgs中获取抛出的异常类型?

时间:2013-01-06 00:09:28

标签: c# windows-phone-8

我使用C#和Visual Studio 2012来开发WP8应用程序。我为我的项目添加了一个服务引用(添加服务引用)。所以我可以使用webservice函数。

client = new YChatWebService.WebServiceControllerPortTypeClient();

client.getDataCompleted += client_getDataCompleted;
client.InnerChannel.OperationTimeout = new TimeSpan(0, 0, 0, 0, 500);
client.getDataAsync(); 

void client_getDataCompleted(object sender, getDataCompletedEventArgs e)
{
    // e.Error.Message

}

我为getData()设置了500毫秒的超时限制;如果超过时间限制,则会出现以下错误:

  

“对'http://example.com/webService/index?ws=1'的HTTP请求有   超过分配的超时。分配给此操作的时间可能   是超时的一部分。“

这很好:)但是,我想知道抛出了什么样的异常。类似于包含字符串“TimeoutException”的字符串变量的东西会很好。我该如何实现呢?

2 个答案:

答案 0 :(得分:3)

您可以使用

if( e.Error is TimeoutException )

查看Exception是否为TimeoutException类型

答案 1 :(得分:1)

这不是来自服务器的http响应包含错误描述,而不是.net异常吗?

e.Error类是否具有“Message”以外的任何其他属性?如果服务器也是.net,那么您可能能够匹配异常类型,但如果它不是.net则它们将不对应。

如果返回了错误代码,我只会使用它,或者只是搜索“超出分配的超时时间”的文本,以确认它是超时异常。