Nắm bắt và xử lý ngoại lệ
Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang
Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.
Khi gặp sự cố, Health Connect sẽ gửi những trường hợp ngoại lệ tiêu chuẩn cho các hoạt động CRUD. Ứng dụng của bạn nên nắm bắt và xử lý từng trường hợp ngoại lệ theo cách phù hợp.
Mỗi phương thức trên HealthConnectClient
liệt kê các trường hợp ngoại lệ có thể được gửi.
Nhìn chung, ứng dụng của bạn phải xử lý các trường hợp ngoại lệ sau:
Ngoại lệ |
Mô tả |
Phương pháp hay nhất được đề xuất |
SecurityException
| Đã xảy ra sự cố khi các yêu cầu này cần quyền không được cấp.
| Để tránh tình trạng này, hãy đảm bảo rằng bạn
công bố khai báo về việc sử dụng các loại dữ liệu Health Connect cho trang web đã phát hành của bạn
. Ngoài ra, bạn phải khai báo các quyền đối với Health Connect
trong tệp kê khai và trong hoạt động của bạn.
|
IOException
| Đã xảy ra sự cố khi đọc và ghi dữ liệu từ ổ đĩa.
| Để tránh sự cố này, dưới đây là một số đề xuất:
- Sao lưu mọi hoạt động đầu vào của người dùng.
- Có thể xử lý mọi sự cố xảy ra trong khi ghi hàng loạt. Ví dụ: hãy đảm bảo quy trình này xử lý được sự cố và thực hiện các thao tác còn lại.
- Áp dụng các chiến lược thử lại và thời gian đợi để xử lý các sự cố về yêu cầu.
|
IllegalStateException
| Một trong các trường hợp sau đã xảy ra:
- Dịch vụ Health Connect không hoạt động.
- Yêu cầu không phải là một cấu trúc hợp lệ. Ví dụ: yêu cầu tổng hợp trong các bộ chứa định kỳ trong đó đối tượng
Instant được dùng cho timeRangeFilter .
| Xử lý các sự cố có thể xảy ra với dữ liệu đầu vào trước khi thực hiện yêu cầu.
Bạn nên chỉ định giá trị cho các biến hoặc dùng các biến đó làm tham số trong một hàm tuỳ chỉnh thay vì sử dụng trực tiếp trong các yêu cầu để có thể áp dụng chiến lược xử lý lỗi.
|
RemoteException
| Đã xảy ra lỗi trong hoặc khi giao tiếp với dịch vụ cơ bản kết nối với SDK.
Ví dụ: ứng dụng của bạn đang cố gắng xoá một bản ghi có uid cụ thể. Tuy nhiên, trường hợp ngoại lệ sẽ được gửi sau khi ứng dụng phát hiện ra bản ghi không tồn tại trong quá trình kiểm tra dịch vụ cơ bản.
| Để tránh sự cố này, dưới đây là một số đề xuất:
- Thường xuyên đồng bộ hoá giữa kho dữ liệu của ứng dụng và Health Connect.
- Áp dụng các chiến lược thử lại và thời gian đợi để xử lý các sự cố về yêu cầu.
|
Nội dung và mã mẫu trên trang này phải tuân thủ các giấy phép như mô tả trong phần Giấy phép nội dung. Java và OpenJDK là nhãn hiệu hoặc nhãn hiệu đã đăng ký của Oracle và/hoặc đơn vị liên kết của Oracle.
Cập nhật lần gần đây nhất: 2025-07-27 UTC.
[[["Dễ hiểu","easyToUnderstand","thumb-up"],["Giúp tôi giải quyết được vấn đề","solvedMyProblem","thumb-up"],["Khác","otherUp","thumb-up"]],[["Thiếu thông tin tôi cần","missingTheInformationINeed","thumb-down"],["Quá phức tạp/quá nhiều bước","tooComplicatedTooManySteps","thumb-down"],["Đã lỗi thời","outOfDate","thumb-down"],["Vấn đề về bản dịch","translationIssue","thumb-down"],["Vấn đề về mẫu/mã","samplesCodeIssue","thumb-down"],["Khác","otherDown","thumb-down"]],["Cập nhật lần gần đây nhất: 2025-07-27 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"]]