Windows phone 8.1 HttpClient异步下载:找不到与此错误代码关联的文本

Windows phone 8.1 HttpClient异步下载:找不到与此错误代码关联的文本,windows-phone-8.1,c++-cx,windows-rt,Windows Phone 8.1,C++ Cx,Windows Rt,我打算使用以下代码下载一个文件。当WIFI可用时,它可以工作;但是当没有Wifi时,我希望捕获在上一个任务.get()中引发的异常。不幸的是,我的代码中的catch似乎没有捕获异常。例外情况是HRESULT:0x80072F30无法找到与此错误代码关联的文本。。我是不是遗漏了一些异常,比如异常是不可预测的 auto httpClient = ref new HttpClient(); auto get_operation = httpClient->GetAsync(ref new Uri

我打算使用以下代码下载一个文件。当WIFI可用时,它可以工作;但是当没有Wifi时,我希望捕获在
上一个任务.get()中引发的异常。不幸的是,我的代码中的
catch
似乎没有捕获异常。例外情况是
HRESULT:0x80072F30无法找到与此错误代码关联的文本。
。我是不是遗漏了一些异常,比如异常是不可预测的

auto httpClient = ref new HttpClient();
auto get_operation = httpClient->GetAsync(ref new Uri(url), HttpCompletionOption::ResponseContentRead);
get_operation->Progress = progressHandler;
auto response = create_task(get_operation).then([](task<HttpResponseMessage^> previousTask)
{
    try
    {
        return previousTask.get();
    }
    catch (Exception^ ex)
    {
        // Some how this does not catch
        OutputDebugString(("Exception: " + ex->Message)->Data());
        return (HttpResponseMessage^)nullptr;
    }
}).get();
// At this point, I expect either a fully read response or response=nullptr
// Code to write to file is omitted
auto-httpClient=ref-new-httpClient();
自动获取\u操作=httpClient->GetAsync(参考新Uri(url),HttpCompletionOption::ResponseContentRead);
获取操作->进度=progressHandler;
自动响应=创建任务(获取任务)。然后([](任务之前的任务)
{
尝试
{
返回上一个任务。get();
}
捕获(异常^ex)
{
//有些人认为这并不流行
OutputDebugString(((“异常:”+ex->Message)->Data());
返回(HttpResponseMessage^)空ptr;
}
}).get();
//此时,我期望一个完全读取响应或response=nullptr
//要写入文件的代码被省略
编辑:~~我测试了微软的官方软件,它显然使用了类似的代码。显然,当没有网络连接时,该应用程序中也会发生相同的崩溃。这类确认缺陷存在于操作系统端,对此无能为力~~


编辑:事实证明,我认为异常没有被捕获,因为Visual Studio弹出了一个对话框,我认为这意味着在现实中,异常会使应用程序崩溃,即当它没有通过VS启动时。我仔细阅读了弹出消息,意识到VS会提示抛出的每个异常,除非配置为不这样做;按下对话框上的[继续]按钮,进入
catch
子句。从“开始”菜单启动应用程序没有问题。

如果此代码是从UI线程调用的,则从代码的最后一行删除
get()
调用。在UI线程中不能这样做


否则,当飞机模式打开时,你的代码对我来说工作正常;正如预期的那样,我在处理程序中捕获了异常。异常具有
0x80072f30
HResult
,记录在as错误\u WINHTTP\u NO\u CM\u连接上

这是真实的设备还是仿真器?WiFi关闭或WiFi打开时网络中其他地方出现问题?@kiewic这是在我的Windows 8.1笔记本电脑上测试的,而不是在模拟器上。结果表明,我认为异常没有被捕获,因为Visual Studio弹出了一个对话框,我想这意味着实际上异常会崩溃应用程序[如果它不是通过VS启动的话]。我仔细阅读了弹出消息,意识到VS会对每个抛出的
异常进行提示[除非配置为不这样做];按下对话框上的[继续]按钮,进入
catch
子句。从“开始”菜单启动应用程序没有问题。