没有互联网连接时,ReadBufferAsync会引发什么异常

时间:2019-06-18 05:10:43

标签: c# exception uwp

从网上获取数据时,如何确定我是否连接失败? 我正在使用GetBufferAsync,当将以太网电缆从计算机中拔出时会引发错误。
我找不到有关此错误的文档,并且我不知道这是否是最佳方法。 我正在加载一个最大60Kb的文本文件。数据不是很多。

我正在Visual Studio 2019中进行开发。

以下代码从www.google.com加载了一些数据,大部分为0。 断开以太网电缆时,在ReadBufferAsync行上引发异常。 我尝试捕获特定的异常:InvalidOperationException,HttpRequestException

错误:0x8002ee7(十进制12007)。
文字:找不到与此错误代码关联的文字。服务器名称或地址无法解析。
InnerException:null

MS文档https://docs.microsoft.com/en-us/windows/desktop/WinInet/wininet-errors不包括我遇到的错误,尽管我的异常在正确的范围内(请参阅https://docs.microsoft.com/en-us/windows/desktop/Debug/system-error-codes--12000-15999-

using System;
using Windows.Storage.Streams;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.Web.Http;


namespace ReadBufferAsyncTest
{
    public sealed partial class MainPage : Page
    {
        public MainPage()
        {
            this.InitializeComponent();

            this.Loaded += MyProgram_Loaded;
        }

        private async void MyProgram_Loaded(object sender, RoutedEventArgs e)
        {
            try
            {
                // Connecting to internet
                var uriBing = new Uri("http://www.google.com");
                var client = new HttpClient();
                IBuffer morseBuffer = await client.GetBufferAsync(uriBing);
                DataReader dataReader = DataReader.FromBuffer(morseBuffer);
                byte[] morseBytes = new byte[morseBuffer.Length];
                dataReader.ReadBytes(morseBytes);
            }
            catch(Exception ex)
            {
                return;      // breakpoint goes here
            }
        }
    }
}

我得到的错误(0x80072ee7)是预期的错误吗? 还有其他错误要寻找吗? 当文档有限时,处理错误的最佳方法是什么?

(其他说明:这是下载小文本文件的最佳方法吗?)

1 个答案:

答案 0 :(得分:0)

  

如何确定我是否无法连接?

根据您的要求,您可以先检查互联网是否可用,然后再通过NetworkHelper获取缓冲区。

// Detect if Internet can be reached
if (NetworkHelper.Instance.ConnectionInformation.IsInternetAvailable)
{
}