> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# SDK エラー処理のベスト プラクティス

> さまざまな言語で admin、server、client SDK から返される PlayFab API エラーを検出、検査、処理するためのベスト プラクティス。

このチュートリアルでは、PlayFab SDK を使用して API エラーにアクセスし、認識し、処理する方法を示します。

ここで説明するプラクティスは、admin、server、client の各 SDK に等しく適用できますが、パターンは選択する言語に *大きく* 依存します。

簡単に言えば、選択するパターンはどの SDK (admin/server/client) にも有効ですが、実装の詳細は *あなたの* プログラミング言語と環境に固有のものになります。

## エラーのキャッチとアクセス

PlayFab SDK は通常、エラー オブジェクトを返すことでエラーを報告します。次のスニペットは、エラーを検出しアクセスする方法を示しています。

```csharp theme={null}
PlayFabClientAPI.LoginWithEmailAddress(new LoginWithEmailAddressRequest() {
    Email = "doesnotexist@mail.com",
    Password = "nevercorrect",
}, result => {
    // success
}, error => {
    // 'error' object is our point of access to error data
});
```

一般に、エラー オブジェクトが定義されている (null ではない) 場合、エラーが発生したことを示します。その後さらにエラーを検査できます。

## エラーの検査

エラーを検査する最も一般的な方法は、コードから認識することです。[グローバル API メソッド エラー コード](/services/playfab/api-references/global-api-method-error-codes) で説明されているとおり、生成される各エラーには人間可読なエラー コードと数値エラー コードが含まれます。

<Note>
  コード *単独で* エラーを認識し、それに従って処理するのに十分です。
</Note>

例として [LoginWithEmailAddress](xref:titleid.playfabapi.com.client.authentication.loginwithemailaddress) API メソッドを取り上げます。このメソッドの [ドキュメント](xref:titleid.playfabapi.com.client.authentication.loginwithemailaddress) に記載されているとおり、実行時に次の内部エラーがスローされる可能性があります:

* `InvalidTitleId 1004`
* `AccountNotFound 1001`
* `InvalidEmailOrPassword 1142`
* `RequestViewConstraintParamsNotAllowed 1303`

次のメソッドは、そのようなエラーを検査して認識する方法を示しています。

```csharp theme={null}
PlayFabClientAPI.LoginWithEmailAddress(new LoginWithEmailAddressRequest() {
    Email = "doesnotexist@mail.com",
    Password = "nevercorrect",
}, result => {
    // success
}, error => {
    // General purpose logging: GenerateErrorReport gives a bunch of information about the error
    Debug.Log(error.GenerateErrorReport());

    // Recognize and handle the error
    switch (error.Error) {
        case PlayFabErrorCode.InvalidTitleId:
            // Handle invalid title id error
            break;
        case PlayFabErrorCode.AccountNotFound:
            // Handle account not found error
            break;
        case PlayFabErrorCode.InvalidEmailOrPassword:
            // Handle invalid email or password error
            break;
        case PlayFabErrorCode.RequestViewConstraintParamsNotAllowed:
            // Handle not allowed view params error
            break;
        default:
            // Handle unexpected error
            break;
    }
});
```

## エラーの処理

エラーが特定されると、処理/回復の戦略はエラーの種類と性質によって異なります。*無効な引数* などのエラーは、再試行しても成功しません。その API 呼び出しを成功させるには、リクエストを修正する必要があります。

再試行戦略を適用できるエラーのサブセットがあります。*再試行可能* なエラーの種類は [グローバル API メソッド エラー コード](/services/playfab/api-references/global-api-method-error-codes) に記載されています。

再試行戦略を適用する際は、次の要件を満たすようにしてください:

* 再試行のたびに、再試行間の遅延を *指数関数的に増加* させる必要があります。これにより、呼び出しが成功する確率が *高まり*、ゲームが PlayFab サーバーにスパムを送信するのを防げます (スパム送信は *さらに多くの* 拒否された呼び出しにつながります)。

* この再試行戦略は *選択的に* 適用し、再試行する価値のあるコードにのみ使用してください。

再試行しても安全なコードの一覧は、[グローバル API メソッド エラー コード](/services/playfab/api-references/global-api-method-error-codes) チュートリアルを参照してください。


## Related topics

- [XBOX services 呼び出しのベストプラクティス](/ja-jp/services/xbox-services/develop/best-practices/live-best-practices-calling-xbl.md)
- [Insights のベスト プラクティス](/ja-jp/services/playfab/data-analytics/legacy/insights/best-practices.md)
- [スロットリングのベスト プラクティス](/ja-jp/services/playfab/live-service-management/service-gateway/throttling/best-practices.md)
- [RTA サービスのベスト プラクティス](/ja-jp/services/xbox-services/fundamentals/rta/concepts/live-rta-best-practices.md)
- [オフラインプレイの処理に関するベストプラクティス](/ja-jp/services/xbox-services/develop/best-practices/live-best-practices-offline-play.md)
