我希望有人可以通过HttpClient异步处理异步/等待异常处理的问题.我已经编写了一些代码来说明,它在Windows Phone 8设备和模拟器上都有用:
private async void SearchButton_Click(object sender, EventArgs e)
{
try
{
HttpClient client = new HttpClient();
System.Diagnostics.Debug.WriteLine("BEGIN FAULTY REQUEST:");
string response = await client.GetStringAsync("http://www.ajshdgasjhdgajdhgasjhdgasjdhgasjdhgas.tk/");
System.Diagnostics.Debug.WriteLine("SUCCESS:");
System.Diagnostics.Debug.WriteLine(response);
}
catch (Exception exception)
{
System.Diagnostics.Debug.WriteLine("CAUGHT EXCEPTION:");
System.Diagnostics.Debug.WriteLine(exception);
}
}
Run Code Online (Sandbox Code Playgroud)
点击调用此函数的按钮,在调试器控制台中生成以下输出,最有趣的是粗体:
开始故障请求:
System.Windows.ni.dll中出现"System.Net.WebException"类型的异常,并且在托管/本机边界之前未处理
System.Windows.ni.dll中出现"System.Net.WebException"类型的异常,并且在托管/本机边界之前未处理
mscorlib.ni.dll中出现'System.Net.Http.HttpRequestException'类型的第一次机会异常
mscorlib.ni.dll中出现"System.Net.Http.HttpRequestException"类型的异常,并且在托管/本地边界之前未处理
CAUGHT EXCEPTION :(此处打印出HttpRequestException)
我当然希望在这种情况下出错,因为我调用的URL是无意义的.我在这里不理解的是,当输出同时报告异常被捕获时,调试器报告未处理异常的原因.此外,应用程序的UI端在打印输出时变得反应迟钝,表明某些事情可能不对.
在使用异步和等待时,这不是处理异常的方法吗?我感谢任何输入!谢谢.