Перехватывать и обрабатывать исключения
Оптимизируйте свои подборки
Сохраняйте и классифицируйте контент в соответствии со своими настройками.
Health Connect генерирует стандартные исключения для операций CRUD при возникновении проблемы. Ваше приложение должно перехватывать и обрабатывать каждое из этих исключений соответствующим образом.
Каждый метод HealthConnectClient
перечисляет исключения, которые могут быть созданы. В общем, ваше приложение должно обрабатывать следующие исключения:
Исключение | Описание | Рекомендуемые лучшие практики |
---|
SecurityException | Возникают проблемы, когда для запросов требуются разрешения, которые не предоставлены. | Чтобы избежать этого, убедитесь, что вы заявили об использовании типов данных Health Connect для опубликованного приложения. Кроме того, вы должны объявить разрешения Health Connect в файле манифеста и в своей деятельности . |
IOException | Возникают проблемы при чтении и записи данных с диска. | Чтобы избежать этой проблемы, вот несколько советов:- Создайте резервную копию любого пользовательского ввода.
- Уметь решать любые проблемы, возникающие во время операций массовой записи. Например, убедитесь, что процесс прошел мимо проблемы, и выполните оставшиеся операции.
- Применяйте стратегии повторных попыток и отсрочки обработки для обработки проблем с запросами.
|
IllegalStateException | Произошел один из следующих сценариев:- Служба Health Connect недоступна.
- Запрос не является допустимой конструкцией. Например, агрегатный запрос в периодических сегментах, где для
timeRangeFilter используется объект Instant .
| Прежде чем отправлять запрос, устраните возможные проблемы с входными данными. Предпочтительно присваивать значения переменным или использовать их в качестве параметров в пользовательской функции, а не использовать их непосредственно в своих запросах, чтобы можно было применять стратегии обработки ошибок. |
RemoteException | Произошли ошибки внутри базовой службы, к которой подключается SDK, или при взаимодействии с ней.
Например, ваше приложение пытается удалить запись с заданным идентификатором uid . Однако исключение выдается после того, как приложение при проверке базовой службы обнаруживает, что запись не существует. | Чтобы избежать этой проблемы, вот несколько советов:- Выполняйте регулярную синхронизацию между хранилищем данных вашего приложения и Health Connect.
- Применяйте стратегии повторных попыток и отсрочки для обработки проблем с запросами.
|
Контент и образцы кода на этой странице предоставлены по лицензиям. Java и OpenJDK – это зарегистрированные товарные знаки корпорации Oracle и ее аффилированных лиц.
Последнее обновление: 2025-07-29 UTC.
[[["Прост для понимания","easyToUnderstand","thumb-up"],["Помог мне решить мою проблему","solvedMyProblem","thumb-up"],["Другое","otherUp","thumb-up"]],[["Отсутствует нужная мне информация","missingTheInformationINeed","thumb-down"],["Слишком сложен/слишком много шагов","tooComplicatedTooManySteps","thumb-down"],["Устарел","outOfDate","thumb-down"],["Проблема с переводом текста","translationIssue","thumb-down"],["Проблемы образцов/кода","samplesCodeIssue","thumb-down"],["Другое","otherDown","thumb-down"]],["Последнее обновление: 2025-07-29 UTC."],[],[],null,["# Catch and handle exceptions\n\nHealth Connect throws standard exceptions for CRUD operations when an issue is\nencountered. Your app should catch and handle each of these exceptions as\nappropriate.\n\nEach method on `HealthConnectClient` lists the exceptions that can be thrown.\nIn general, your app should handle the following exceptions:\n\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n| **Exception** | **Description** | **Recommended best practice** |\n|-------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `SecurityException` | There are issues encountered when the requests require permissions that aren't granted. | To avoid this, make sure that you've [declared use of Health Connect data types](/guide/health-and-fitness/health-connect/develop/frequently-asked-questions#declare-access) for your published app. Also, you must declare Health Connect permissions [in the manifest file](/guide/health-and-fitness/health-connect/develop/get-started#step-3) and [in your activity](/guide/health-and-fitness/health-connect/develop/get-started#step-4). \u003cbr /\u003e \u003cbr /\u003e |\n| `IOException` | There are issues encountered upon reading and writing data from disk. | To avoid this issue, here are some suggestions: \u003cbr /\u003e - Back up any user input. - Be able to handle any issues that occur during bulk write operations. For example, make sure the process moves past the issue and carry out the remaining operations. - Apply retries and backoff strategies to handle request issues. \u003cbr /\u003e |\n| `IllegalStateException` | One of the following scenarios has occurred: \u003cbr /\u003e - The Health Connect service isn't available. - The request isn't a valid construction. For example, an aggregate request in periodic buckets where an `Instant` object is used for the `timeRangeFilter`. \u003cbr /\u003e | Handle possible issues with the inputs first before doing a request. Preferably, assign values to variables or use them as parameters within a custom function instead of using them directly in your requests so that you can apply error handling strategies. |\n| `RemoteException` | Errors have occurred within, or in communicating with, the underlying service to which the SDK connects. For example, your app is trying to delete a record with a given `uid`. However, the exception is thrown after the app finds out upon checking in the underlying service that the record doesn't exist. | To avoid this issue, here are some suggestions: \u003cbr /\u003e - Perform regular syncs between your app's datastore and Health Connect. - Apply retries and backoff strategies to handle request issues. \u003cbr /\u003e |\n\n\u003cbr /\u003e"]]