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.