我试图从 OnlineIdAuthenticator::AuthenticateUserAsync 方法中捕获异常,例如,当没有互联网连接时会发生这种情况。
我找到了一些关于这个主题的信息,但它并没有真正帮助我。
这是演示我尝试处理错误的方式的代码:
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 方法失败时,这些捕获中的任何一个都不起作用。任何帮助,请。从异步方法中捕获异常的正确方法是什么?