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

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

ここで説明するプラクティスは、管理、サーバー、およびクライアント SDK に同様に適用されますが、パターンは選択した言語に大きく依存します。

簡単に言えば、好みのパターンがすべての SDK (管理/サーバー/クライアント) に対して有効ですが、実装の詳細は自身のプログラミング言語と環境に固有です。

エラーをキャッチしてアクセスする

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

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 メソッドのエラー コード」で説明しているように、生成された各エラーには、人間が判読できると数字のエラー コードが含まれています。

注意

コードのみで、適宜エラーを認識および処理できます。

LoginWithEmailAddress API メソッドを例として見てみましょう。 このメソッドのドキュメントに記載されるように、実行の際に以下の内部エラーが発生する可能性があります。

  • InvalidTitleId 1004
  • AccountNotFound 1001
  • InvalidEmailOrPassword 1142
  • RequestViewConstraintParamsNotAllowed 1303

以下のメソッドは、このようなエラーを調査および認識する方法を説明しています。

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 メソッド エラー コードで説明しています。

再試行の戦略を適用する場合は、以下の要件を満たしていることを必ず確認してください。

  • 再試行するたびに、次の再試行までの遅延は指数関数的に増加します。 これによって呼び出しが成功する可能性が高くなり、ゲームが PlayFab サーバーに大量の呼び出しを実行する (その結果、さらに呼び出しが拒否される) ことを防ぐことができます。

  • 再試行の戦略は、選択的に適用し、再試行が適切なコードのみに使用してください。

安全に再試行できるコードのリストは、「グローバル API メソッドのエラー コード」 チュートリアルをご覧ください。