捕获和处理异常

遇到问题时,Health Connect 会针对 CRUD 操作抛出标准异常。您的应用应酌情捕获和处理每个异常。

HealthConnectClient 中的每种方法都会列出可能会被抛出的异常。一般而言,您的应用应处理以下异常:

异常 说明 建议的最佳实践
SecurityException 相应请求需要用到未被授予的权限时遇到问题。 为避免此类问题,请确保您已为已发布的应用请求权限。另外,必须在清单文件您的 activity 中声明这些权限。

IOException 从磁盘中读取和向其中写入数据时遇到问题。 为避免此类问题,请参考以下建议:

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

IllegalStateException 您可能遇到了以下情况之一:

  • Health Connect 服务不可用。
  • 相应请求的结构无效。例如,定期存储分区中的汇总请求,其中的 Instant 对象用于 timeRangeFilter

在发出请求之前,先处理可能存在的输入问题。最好能为变量赋值或在自定义函数中将它们用作参数,而不是直接在请求中使用这些值,以便顺利应用错误处理策略。
RemoteException SDK 所关联的底层服务内部或与该服务通信时出现错误。

例如,您的应用尝试删除具有给定 uid 的记录。不过,当应用在检查底层服务后发现记录不存在时,会抛出异常。
为避免此类问题,请参考以下建议:

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