

Avviso di fine del supporto: il 20 maggio 2026, AWS terminerà il supporto per AWS SimSpace Weaver. Dopo il 20 maggio 2026, non potrai più accedere alla SimSpace Weaver console o SimSpace Weaver alle risorse. Per ulteriori informazioni, consulta [AWS SimSpace Weaver Fine del supporto](https://docs.aws.amazon.com/simspaceweaver/latest/userguide/simspaceweaver-end-of-support.html). 

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

# Result e gestione degli errori
<a name="working-with_app-sdk_result"></a>

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();
         */
    }
}
```

## Result istruzione di controllo, macro
<a name="working-with_app-sdk_result_macro"></a>

All'interno di una funzione con un tipo restituito`Aws::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é if-else struttura di 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` da`BeginUpdate()`. 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()` to`Aws::WeaverRuntime::Result<void>`. È possibile ripetere questo processo per continuare a inviare il codice di errore più in basso nello stack di chiamate.