Resulte Tratamento de erros - AWS SimSpace Tecelão

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Resulte Tratamento de erros

AAws::WeaverRuntime::Result<T> classe usa umaOutcome biblioteca de terceiros. Você pode usar o padrão a seguir para verificarResult e catch os erros retornados pelas chamadas de 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(); */ } }

Resultmacro de declaração de controle

Dentro de uma função com um tipo de retornoAws::WeaverRuntime::Result<T>, você pode usar aWEAVERRUNTIME_TRY macro em vez do padrão de código anterior. A macro executará a função passada para ela. Se a função passada falhar, a macro fará com que a função delimitadora retorne um erro. Se a função passada for bem-sucedida, a execução prosseguirá para a próxima linha. O exemplo a seguir mostra uma reescrita daDoBeginUpdate() função anterior. Essa versão usa aWEAVERRUNTIME_TRY macro em vez da estruturaif-else de controle. Observe que o tipo de retorno da função é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(); }

SeBeginUpdate() falhar, a macroDoBeginUpdate() retornará mais cedo com uma falha. Você pode usar aWEAVERRUNTIME_EXPECT_ERROR macro para obter oAws::WeaverRuntime::ErrorCode deBeginUpdate(). O exemplo a seguir mostra como aUpdate() função chamaDoBeginUpdate() e obtém o código de erro em caso de falha.

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); } }

Você pode tornar o código de erroBeginUpdate() disponível para uma função que chamaUpdate() alterando o tipo de retorno deUpdate() paraAws::WeaverRuntime::Result<void>. Você pode repetir esse processo para continuar enviando o código de erro mais abaixo na pilha de chamadas.