

Aviso de fim do suporte: em 20 de maio de 2026, AWS encerrará o suporte para AWS SimSpace Weaver. Depois de 20 de maio de 2026, você não poderá mais acessar o SimSpace Weaver console ou os SimSpace Weaver recursos. Para obter mais informações, consulte [AWS SimSpace Weaver Fim do suporte](https://docs.aws.amazon.com/simspaceweaver/latest/userguide/simspaceweaver-end-of-support.html). 

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á.

# Result e tratamento de erros
<a name="working-with_app-sdk_result"></a>

A classe `Aws::WeaverRuntime::Result<T>` usa uma biblioteca `Outcome` de terceiros. Use o padrão a seguir para verificar `Result` e capturar 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();
         */
    }
}
```

## Result macro de declaração de controle
<a name="working-with_app-sdk_result_macro"></a>

Dentro de uma função com um tipo de retorno `Aws::WeaverRuntime::Result<T>`, é possível usar a macro `WEAVERRUNTIME_TRY` 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 envolvente retorne um erro. Se a função passada for bem-sucedida, a execução avançará para a próxima linha. O exemplo a seguir mostra a nova gravação da função `DoBeginUpdate()` anterior. Esta versão usa a `WEAVERRUNTIME_TRY` macro em vez da if-else estrutura de controle. 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();
}
```

Se `BeginUpdate()` falhar, a macro `DoBeginUpdate()` retorna mais cedo com uma falha. Você pode usar a macro `WEAVERRUNTIME_EXPECT_ERROR` para obter o `Aws::WeaverRuntime::ErrorCode` de `BeginUpdate()`. O exemplo a seguir mostra como a função `Update()` chama `DoBeginUpdate()` 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 erro `BeginUpdate()` disponível para uma função que chamará `Update()` alterando o tipo de retorno de `Update()` para `Aws::WeaverRuntime::Result<void>`. Repita o processo para continuar enviando o código de erro mais abaixo na pilha de chamadas.