Resulte gestione degli errori - AWS SimSpace Weaver

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Resulte gestione degli errori

La Aws::WeaverRuntime::Result<T> classe utilizza una Outcome libreria di terze parti. È possibile utilizzare lo schema seguente per verificare gli errori Result e catch restituiti dalle chiamate API.

void DoBeginUpdate(Application& app) { Result<Transaction> transactionResult = Api::BeginUpdate(app); if (transactionResult) { Transaction transaction = std::move(transactionResult).assume_value(); /** * Do things with transaction ... */ } else { ErrorCode errorCode = WEAVERRUNTIME_EXPECT_ERROR(transactionResult); /** * Macro compiles to: * ErrorCode errorCode = transactionResult.assume_error(); */ } }

Resultistruzione di controllo, macro

All'interno di una funzione con un tipo restituitoAws::WeaverRuntime::Result<T>, è possibile utilizzare la WEAVERRUNTIME_TRY macro anziché lo schema di codice precedente. La macro eseguirà la funzione che le è stata passata. Se la funzione passata fallisce, la macro farà in modo che la funzione di inclusione restituisca un errore. Se la funzione passata ha esito positivo, l'esecuzione passa alla riga successiva. L'esempio seguente mostra una riscrittura della funzione precedente. DoBeginUpdate() Questa versione utilizza la WEAVERRUNTIME_TRY macro anziché la struttura di if-else controllo. Nota che il tipo restituito dalla funzione èAws::WeaverRuntime::Result<void>.

Aws::WeaverRuntime::Result<void> DoBeginUpdate(Application& app) { /** * Execute Api::BeginUpdate() * and return from DoBeginUpdate() if BeginUpdate() fails. * The error is available as part of the Result. */ WEAVERRUNTIME_TRY(Transaction transaction, Api::BeginUpdate(m_app)); /** * Api::BeginUpdate executed successfully. * * Do things here. */ return Aws::Success(); }

Se BeginUpdate() fallisce, la macro DoBeginUpdate() restituisce anticipatamente con un errore. È possibile utilizzare la WEAVERRUNTIME_EXPECT_ERROR macro per ottenere il file Aws::WeaverRuntime::ErrorCode daBeginUpdate(). L'esempio seguente mostra come la Update() funzione chiama DoBeginUpdate() e ottiene il codice di errore in caso di errore.

void Update(Application& app) { Result<void> doBeginUpdateResult = DoBeginUpdate(app); if (doBeginUpdateResult) { /** * Successful. */ } else { /** * Get the error from Api::BeginUpdate(). */ ErrorCode errorCode = WEAVERRUNTIME_EXPECT_ERROR(doBeginUpdateResult); } }

È possibile rendere BeginUpdate() disponibile il codice di errore per una funzione che chiama Update() modificando il tipo restituito da Update() toAws::WeaverRuntime::Result<void>. È possibile ripetere questo processo per continuare a inviare il codice di errore più in basso nello stack di chiamate.