1

我想捕獲來自OnlineIdAuthenticator :: AuthenticateUserAsync方法的異常,例如在沒有互聯網連接時發生。如何捕獲異步方法中發生的異常? (Windows應用商店應用程序,PPL)

我發現some info關於此主題,但它並沒有真正幫助我。

這裏是演示了,我嘗試處理錯誤的方式代碼:

auto auth = ref new OnlineIdAuthenticator(); 
auto request = ref new OnlineIdServiceTicketRequest ("wl.signin wl.basic wl.skydrive_update", "DELEGATION"); 
auto request_vec = ref new Vector <OnlineIdServiceTicketRequest ^>(); 
request_vec->Append (request); 

create_task (auth->AuthenticateUserAsync (request_vec, CredentialPromptType::RetypeCredentials)) 
.then ([] (UserIdentity ^ident) 
{ 
    try 
    { 
     auto ticket = ident->Tickets->GetAt (0); 
     token = std::wstring (ticket->Value->Data()); 
    } 
    catch (const concurrency::task_canceled &) 
    { 
     int _break_point_here = 0; 
    } 
    catch (const std::exception &) 
    { 
     int _break_point_here = 0; 
    } 
    catch (Platform::Exception ^ex) 
    { 
     int _break_point_here = 0; 
    } 
}); 

但是從這些漁獲物沒有人當AuthenticateUserAsync方法失敗不起作用。 請提供任何幫助。從異步方法中捕獲異常的正確方法是什麼?

+0

我知道這個代碼示例有點愚蠢,因爲try塊不包裝AuthenticateUserAsync調用。但我不明白該怎麼做。 – hellobody

回答

相關問題