首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Xamarin形式System.Net.WebException

Xamarin形式System.Net.WebException
EN

Stack Overflow用户
提问于 2017-12-02 14:51:00
回答 1查看 625关注 0票数 1

我正在使用Xamarin.Forms创建一个安卓应用程序。在频繁地切换互联网连接时,我得到了System.Net.WebException ConnectFailure的例外。我试图在我的PCL代码中处理它,但它并没有被捕捉到。以下是Xamarin.Forms共享项目的示例代码。

代码语言:javascript
复制
 public async Task GetNewSomething(CancellationToken token)
    {
          await Task.Run(async () =>
            {
                while (true)
                {
                    token.ThrowIfCancellationRequested();
                    await Task.Delay(10000, token);
                    if (CrossConnectivity.Current.IsConnected) // check if internet is available
                    {
                        try
                        {   
                            //Make server call to get data
                            FacilityManager.GetAllFacilities(list =>
                            {
                              //For testing purpose : Intentionally thowing an exception to check if we can catch it in the catch block below.  
                                throw new WebException();
                                MessagingCenter.Send(list, "FreshFacilityListFromServer");
                            }, 0, true);
                        }
                        catch (WebException ex)
                        {
                       //It is never gets caught here. :(
                        }
                    }
                }
            }, token);
        }
    }

请有人指导我如何在给定的catch块中处理WebException。感谢所有反馈意见。

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2018-04-05 21:05:06

我也看到这个了。我通过以下方法成功地捕获了它:

代码语言:javascript
复制
catch (System.Net.WebException ex) {}

由于某些原因,即使我试图重新抛出它,它也不是冒泡和停止执行;但是,我能够强迫它冒泡,并最终通过重新包装异常来处理它。

代码语言:javascript
复制
public async Task DownloadAndInstall(...)
{
  ...

  // Download
  try
   {
      await Download(...)
   }
   catch (Exception ex)
   {
       throw new DownloadException("Something bad happened");
   }
   ...
}

public async Task Download(...)
{
   ...
   // try some web activity
   try
   {
      ...
   }
   catch (System.Net.WebException ex)
   {
      throw new Exception("Uncaught exception", ex);
   }
   ...
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47609122

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档