例外をキャッチして処理する

ヘルスコネクトは、問題が発生した場合に CRUD 操作について標準的な例外をスローします。すべてのアプリで、これらを適切にキャッチして処理する必要があります。

HealthConnectClient の各メソッドは、スローされる可能性のある例外をリストしますが、一般に次のような処理が必要です。

例外 説明 推奨されるベスト プラクティス
SecurityException 現在付与されていない権限を必要とするリクエストの場合にスローされます。この問題を回避するには、公開したアプリの権限をリクエストしていることを確認します。また権限のリクエストは、マニフェスト ファイルアクティビティ内で宣言する必要があります。

IOException ディスクのデータの読み取りと書き込みで問題が発生した場合にスローされます。この問題を回避するには、次の方法をお試しください。

  • ユーザー入力をバックアップします。
  • 一括書き込みオペレーション中に発生した問題に対処できるようにします。たとえば、プロセスで問題を越えたことを確認してから、残りの操作を行うようにします。
  • リクエストの問題に対処するために、再試行とバックオフの戦略を適用します。

IllegalStateException 次のいずれかの状況が発生した場合にスローされます。

  • ヘルスコネクト サービスを利用できない。
  • リクエストが有効な構造でない(timeRangeFilterInstant オブジェクトが使用される定期的なバケットでの集計リクエストなど)。

リクエストを処理する前に、入力に関する潜在的な問題に対処します。リクエストで値を直接使用する代わりに、カスタム関数内で変数に値を代入するか、パラメータとして使用することをおすすめします。そうすることで、エラー処理戦略を適用できます。
RemoteException SDK が接続されている基となるサービスでエラーが発生したか、サービスとの通信中にエラーが発生した場合にスローされます。

たとえば、アプリが特定の uid を持つレコードを削除しようとした場合に、基となるサービスでチェックして初めてレコードが存在しないことが検出されると、例外がスローされます。
この問題を回避するには、次の方法をお試しください。

  • アプリのデータストアとヘルスコネクトの間で定期的に同期を実行します。
  • リクエストの問題に対処するために、再試行とバックオフの戦略を適用します。