2017-10-09 80 views
-1

我希望大家都做得很好。C#处理ContinueWith任务中的响应异常(WinForms)

所以我们的任务是使用多线程方法来运行GetResponse方法。

WebResponse response = await Task.Run(() => request.GetResponse()) 

这与我的其他程序完美结合。

现在,当我输入一个不存在的网址并发生异常时,问题就会发生。

我一直在想出一个很好的方法来捕捉这个异常并将其添加到标签,但我一直无法这样做。

WebResponse response = await Task.Run(() => request.GetResponse()) 
      .ContinueWith(
      ex => 
      { 
       if (ex.Exception != null) 
        ex.Exception.Handle(x => 
        { 
         Label1.Text = (x.Response as HttpWebResponse).StatusCode; 
         return true; 
        }); 
      }); 

在这段代码中,我找不出如何捕获抛出的异常。 (例外可能是404错误,或其他)

任何帮助将不胜感激。 谢谢!

+0

包裹地等待着一个尝试捕捉,然后将异常作为必要时处理。 – Nkosi

+0

'await'和'ContinueWith'的组合背后有什么想法?为什么不只是等待?或者更好的是,使用带本地异步/等待支持的HttpClient。 –

回答

0

让您的例外像下面

List<Exception> Exceptions = ex.Exception.InnerExceptions.ToList(); 

,并通过他们循环,找到任务异常