Xử lý lỗi cho Cloud Storage trên Android

Đôi khi mọi việc không diễn ra như kế hoạch và có lỗi xảy ra.

Khi nghi ngờ, hãy kiểm tra lỗi được trả về và xem thông báo lỗi đó có nội dung gì. Đoạn mã sau đây cho thấy cách triển khai trình xử lý lỗi tuỳ chỉnh kiểm tra mã lỗi và thông báo lỗi do Cloud Storage trả về. Lỗi này trình xử lý có thể được thêm vào nhiều đối tượng dùng trong Cloud Storage API (dành cho ví dụ: UploadTaskFileDownloadTask).

Kotlin+KTX

internal inner class MyFailureListener : OnFailureListener {
    override fun onFailure(exception: Exception) {
        val errorCode = (exception as StorageException).errorCode
        val errorMessage = exception.message
        // test the errorCode and errorMessage, and handle accordingly
    }
}

Java

class MyFailureListener implements OnFailureListener {
    @Override
    public void onFailure(@NonNull Exception exception) {
        int errorCode = ((StorageException) exception).getErrorCode();
        String errorMessage = exception.getMessage();
        // test the errorCode and errorMessage, and handle accordingly
    }
}

Nếu bạn đã kiểm tra thông báo lỗi và có Quy tắc bảo mật của Cloud Storage cho phép nhưng vẫn chưa khắc phục được lỗi, hãy truy cập vào Trang hỗ trợ và cho chúng tôi biết cách có thể giúp bạn.

Xử lý thông báo lỗi

Có một số lý do có thể khiến lỗi xảy ra, bao gồm cả nguyên nhân do tệp không tồn tại, người dùng không có quyền truy cập vào tệp mong muốn hoặc người dùng huỷ tải tệp lên.

Để chẩn đoán đúng vấn đề và xử lý lỗi, dưới đây là danh sách đầy đủ tất cả những lỗi mà khách hàng sẽ mắc phải và cách lỗi có thể xảy ra. Mã lỗi trong trường hợp này bảng được định nghĩa trong lớp StorageException dưới dạng hằng số nguyên.

Lý do
ERROR_UNKNOWN Đã xảy ra lỗi không xác định.
ERROR_OBJECT_NOT_FOUND Không có đối tượng nào tại tham chiếu mong muốn.
ERROR_BUCKET_NOT_FOUND Chưa có bộ chứa nào được định cấu hình cho Cloud Storage
ERROR_PROJECT_NOT_FOUND Chưa có dự án nào được định cấu hình cho Cloud Storage
ERROR_QUOTA_EXCEEDED Đã vượt quá hạn mức bộ chứa của bạn trong Cloud Storage. Nếu bạn đang ở cấp miễn phí, hãy nâng cấp lên gói có tính phí. Nếu bạn đang sử dụng gói có tính phí, hãy liên hệ với nhóm hỗ trợ Firebase.
ERROR_NOT_AUTHENTICATED Người dùng chưa được xác thực, vui lòng xác thực và thử lại.
ERROR_NOT_AUTHORIZED Người dùng không được phép thực hiện hành động mong muốn, hãy kiểm tra các quy tắc của bạn để đảm bảo các quy tắc đó đúng.
ERROR_RETRY_LIMIT_EXCEEDED Đã vượt quá giới hạn thời gian tối đa đối với một thao tác (tải lên, tải xuống, xoá, v.v.). Hãy thử lại.
ERROR_INVALID_CHECKSUM Tệp trên máy khách không khớp với tổng kiểm tra của tệp mà máy chủ nhận được. Hãy thử tải video lên lại.
ERROR_CANCELED Người dùng đã huỷ thao tác.

Ngoài ra, việc cố gắng gọi getReferenceFromUrl() bằng URL không hợp lệ sẽ dẫn đến việc gửi IllegalArgumentException. Đối số với phương thức trên phải có dạng gs://bucket/object hoặc https://firebasestorage.googleapis.com/v0/b/bucket/o/object?token=<TOKEN>