我希望有人能对我在使用 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);
}
}
点击调用此函数的按钮,在调试器控制台中产生以下输出,最有趣的是粗体:
开始错误请求:
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”类型的异常,并且在托管/本机边界之前未处理
发现异常:
(在这里它打印出 HttpRequestException)
当然,在这种情况下,我预计会出现错误,因为我调用的 URL 是无稽之谈。我在这里不理解的是,当输出同时报告异常已被捕获时,为什么调试器会报告未处理异常。此外,在打印输出时,应用程序的 UI 端的响应速度会大大降低,这表明可能有问题。
这不是在使用 async 和 await 时处理异常的方法吗?我很感激任何意见!谢谢。