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 メソッドのエラー コード」 チュートリアルをご覧ください。