Перехватывать и обрабатывать исключения

Health Connect генерирует стандартные исключения для операций CRUD при возникновении проблемы. Ваше приложение должно перехватывать и обрабатывать каждое из этих исключений соответствующим образом.

Каждый метод HealthConnectClient перечисляет исключения, которые могут быть созданы. В общем, ваше приложение должно обрабатывать следующие исключения:

Исключение Описание Рекомендуемые лучшие практики
SecurityException Возникают проблемы, когда для запросов требуются разрешения, которые не предоставлены. Чтобы избежать этого, убедитесь, что вы заявили об использовании типов данных Health Connect для опубликованного приложения. Кроме того, вы должны объявить разрешения Health Connect в файле манифеста и в своей деятельности .

IOException Возникают проблемы при чтении и записи данных с диска. Чтобы избежать этой проблемы, вот несколько советов:

  • Создайте резервную копию любого пользовательского ввода.
  • Уметь решать любые проблемы, возникающие во время операций массовой записи. Например, убедитесь, что процесс прошел мимо проблемы, и выполните оставшиеся операции.
  • Применяйте стратегии повторных попыток и отсрочки обработки для обработки проблем с запросами.

IllegalStateException Произошел один из следующих сценариев:

  • Служба Health Connect недоступна.
  • Запрос не является допустимой конструкцией. Например, агрегатный запрос в периодических сегментах, где для timeRangeFilter используется объект Instant .

Прежде чем отправлять запрос, устраните возможные проблемы с входными данными. Предпочтительно присваивать значения переменным или использовать их в качестве параметров в пользовательской функции, а не использовать их непосредственно в своих запросах, чтобы можно было применять стратегии обработки ошибок.
RemoteException Произошли ошибки внутри базовой службы, к которой подключается SDK, или при взаимодействии с ней.

Например, ваше приложение пытается удалить запись с заданным идентификатором uid . Однако исключение выдается после того, как приложение при проверке базовой службы обнаруживает, что запись не существует.
Чтобы избежать этой проблемы, вот несколько советов:

  • Выполняйте регулярную синхронизацию между хранилищем данных вашего приложения и Health Connect.
  • Применяйте стратегии повторных попыток и отсрочки для обработки проблем с запросами.