2017-06-29 128 views
0

此代碼在引發時未捕獲到AccessDeniedException。如何處理異步函數中的異常UWP App GetFileFromPathAsync(path);

爲什麼?

沒有任何異常處理程序會捕獲它。我完全按照文檔。

auto fileOp = StorageFile::GetFileFromPathAsync(filePath); 
auto fileTask = create_task(fileOp);  
auto c1 = fileTask.then([](StorageFile^ file) { 
      //... 
      }).then([](task<StorageFile^> t) { 
       try { 
        auto ident = t.get(); 
       } 
       catch (const std::exception &e) { 
        auto msg = ref new MessageDialog("File not found."); 
       } 
       catch (AccessDeniedException^ e) { 
        auto msg = ref new MessageDialog("Access denied."); 
       } 
       catch (Exception^ e) { 
        auto msg = ref new MessageDialog("Unknown errer."); 
       } 
      }); 
+0

我是不是能夠得到的代碼工作,沒有,但我能找到解決使用FileIO的問題。我仍然不明白這裏發生了什麼問題。 –

+0

這很奇怪,我的代碼在我身邊很好。你有沒有嘗試過一個新的空白C++項目?或者可以請你分享一張[mcve],以便我們知道發生了什麼問題? –

回答

0

爲了處理GetFileFromPathAsync方法拋出的異常,可以用下面的代碼試試:

auto fileOp = StorageFile::GetFileFromPathAsync(filePath); 
auto fileTask = create_task(fileOp); 
auto c1 = fileTask.then([](task<StorageFile^> t) { 
    try 
    { 
     StorageFile^ file = t.get(); 
     ///... 
    } 
    catch (AccessDeniedException^) 
    { 
     auto msg = ref new MessageDialog("Access denied."); 
     create_task(msg->ShowAsync()); 
    } 
    catch (Exception^ e) { 
     auto msg = ref new MessageDialog(e->Message); 
     create_task(msg->ShowAsync()); 
    } 
});