

サポート終了通知: 2026 年 5 月 20 日に、 AWS は のサポートを終了します AWS SimSpace Weaver。2026 年 5 月 20 日以降、 SimSpace Weaver コンソールまたは SimSpace Weaver リソースにアクセスできなくなります。詳細については、[AWS SimSpace Weaver 「サポート終了](https://docs.aws.amazon.com/simspaceweaver/latest/userguide/simspaceweaver-end-of-support.html)」を参照してください。

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Result とエラー処理
<a name="working-with_app-sdk_result"></a>

この `Aws::WeaverRuntime::Result<T>` クラスはサードパーティの `Outcome` ライブラリを使用しています。以下のパターンを使用して、`Result` を確認し、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 制御文マクロ
<a name="working-with_app-sdk_result_macro"></a>

戻り値タイプ `Aws::WeaverRuntime::Result<T>` を持つ関数内では、前のコードパターンの代わりに `WEAVERRUNTIME_TRY` マクロを使用できます。マクロは渡された関数を実行します。渡された関数が失敗すると、マクロは囲んでいる関数にエラーを返送させます。渡された関数が成功すると、実行は次の行に進みます。以下の例は、以前の `DoBeginUpdate()` 関数の再記述を示しています。このバージョンでは、if-else 制御構造の代わりに `WEAVERRUNTIME_TRY` マクロを使用しています。関数の戻り値タイプは `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();
}
```

`BeginUpdate()` に失敗した場合、マクロは障害発生時に早く`DoBeginUpdate()` を返送します。`WEAVERRUNTIME_EXPECT_ERROR` マクロを使用して `BeginUpdate()` から `Aws::WeaverRuntime::ErrorCode` を取得できます。以下の例は、障害発生時に `Update()` 関数が `DoBeginUpdate()` を呼び出してエラーコードを取得する方法を示しています。

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

    }
}
```

戻り値タイプを `Update()` から `Aws::WeaverRuntime::Result<void>` に変更することで、`BeginUpdate()` からのエラーコードを `Update()` を呼び出す関数に利用できるようにすることができます。この手順を繰り返して、エラーコードを呼び出しスタックのさらに下位に送り続けることができます。