1

我试图从 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 方法失败时,这些捕获中的任何一个都不起作用。任何帮助,请。从异步方法中捕获异常的正确方法是什么?

4

1 回答 1

0

这里有答案。问题已关闭。

于 2013-05-20T19:27:58.313 回答