捕获和处理异常

Health Connect 在遇到问题时会针对 CRUD 操作抛出标准异常。您的应用应适当地捕获并处理这些异常。

HealthConnectClient 上的每个方法都列出了可能抛出的异常。通常,您的应用应处理以下异常:

异常 说明 推荐的最佳实践
SecurityException 当请求需要但未授予权限时,会遇到问题。为避免此问题,请确保您已为您发布的应用程序声明了 Health Connect 数据类型的使用。此外,您必须在清单文件您的 activity 中声明 Health Connect 权限。

IOException 从磁盘读写数据时遇到问题。为避免此问题,以下是一些建议:

  • 备份所有用户输入。
  • 能够处理批量写入操作期间发生的任何问题。例如,确保进程能够跳过问题并继续执行剩余操作。
  • 应用重试和退避策略来处理请求问题。

IllegalStateException 发生了以下其中一种情况:

  • Health Connect 服务不可用。
  • 请求构造无效。例如,在周期性存储桶中使用 Instant 对象作为 timeRangeFilter 的聚合请求。

在发出请求之前,首先处理输入中可能存在的问题。最好将值赋给变量或将其用作自定义函数中的参数,而不是直接在请求中使用它们,以便您可以应用错误处理策略。
RemoteException SDK 连接到的底层服务内部或与其通信时发生错误。

例如,您的应用正在尝试删除具有给定 uid 的记录。然而,在应用检查底层服务发现该记录不存在后,抛出了异常。
为避免此问题,以下是一些建议:

  • 在您的应用数据存储与 Health Connect 之间执行定期同步。
  • 应用重试和退避策略来处理请求问题。