小编Nil*_*tar的帖子

在async/await中正确处理HttpClient异常

我希望有人可以通过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端在打印输出时变得反应迟钝,表明某些事情可能不对.

在使用异步和等待时,这不是处理异常的方法吗?我感谢任何输入!谢谢.

.net c# asynchronous async-await windows-phone-8

13
推荐指数
2
解决办法
5万
查看次数

标签 统计

.net ×1

async-await ×1

asynchronous ×1

c# ×1

windows-phone-8 ×1