我希望有人能够就我在使用HttpClient进行异步/等待异常处理时遇到的问题进行一点点启发。我已经写一些代码来说明,并且它是被同时获得Windows电话8装置和仿真器上excecuted:在async/await中正确处理HttpClient异常
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);
}
}
攻丝调用该功能的按钮时,产生在调试器控制台以下输出,最有趣的是在大胆的那些:
BEGIN FAULTY REQUEST:
型“System.Net.WebException”的异常出现在System.Windows.ni.dll和管理之前没有处理/本地边界
型“System.Net.WebException”的异常出现在System.Windows.ni.dll和管理/本地边界
类型的第一次机会异常“系统之前没有处理。 Net.Http.HttpRequestException”发生在mscorlib.ni.dll
类型的异常‘System.Net.Http.HttpRequestException’发生在mscorlib.ni.dll和管理/本地边界之前没有处理
被拒绝例外: (在这里它打印出HttpRequestException)
当然,我期待在这种情况下的错误,因为我打电话的URL是无稽之谈。这里我不理解的是调试器报告说异常未被处理的原因,当输出同时报告异常被捕获时。此外,应用程序的UI侧在输出正在打印时变得非常不敏感,表明可能有错误。
这是不是在处理异步和等待时处理异常的方式?我感谢任何输入!谢谢。
至于响应你不应该在UI事件上运行一个漫长的过程。这些应该是快速的,长时间运行的过程应该在另一个线程中完成。试试'BackgroundWorker' http://msdn.microsoft.com/en-us/library/System.ComponentModel.BackgroundWorker.aspx – Harrison