Nắm bắt và xử lý ngoại lệ

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 đã yêu cầu cấp quyền cho ứng dụng đã xuất bản. Ngoài ra, các quyền này phải được khai báo trong tệp kê khaitrong 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.