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

Đôi khi, mọi thứ không diễn ra như kế hoạch và lỗi xảy ra.

Khi không chắc chắn, hãy kiểm tra lỗi được trả về và xem thông báo lỗi. 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ề. Bạn có thể thêm các trình xử lý lỗi như vậy vào nhiều đối tượng được sử dụng trong API Cloud Storage (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ó Cloud Storage Security Rules cho phép hành động của mình, nhưng vẫn gặp khó khăn trong việc khắc phục lỗi, hãy truy cập vào Trang hỗ trợ của chúng tôi và cho chúng tôi biết cách chúng tôi có thể trợ giúp.

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

Có một số lý do khiến lỗi có thể xảy ra, bao gồm cả việc 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 cách vấn đề và xử lý lỗi, sau đây là danh sách đầy đủ tất cả lỗi mà ứng dụng của chúng tôi sẽ đưa ra và cách lỗi có thể xảy ra. Các mã lỗi trong bảng này được xác định trong lớp StorageException dưới dạng hằng số 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ồn tại tại tham chiếu đã chỉ định.
ERROR_BUCKET_NOT_FOUND Không có bộ chứa nào được định cấu hình cho Cloud Storage
ERROR_PROJECT_NOT_FOUND Không có dự án nào được định cấu hình cho Cloud Storage
ERROR_QUOTA_EXCEEDED Hạn mức trên bộ chứa Cloud Storage của bạn đã vượt quá. Nếu bạn đang sử dụng gói giá Spark, hãy cân nhắc nâng cấp lên gói giá Blaze trả theo mức sử dụng. Nếu bạn đang dùng Gói giá linh hoạt, hãy liên hệ với Nhóm hỗ trợ Firebase.

Quan trọng: Kể từ ngày 1 tháng 10 năm 2025, bạn bắt buộc phải sử dụng gói giá linh hoạt để dùng Cloud Storage, kể cả bộ chứa mặc định.
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 được yêu cầu, 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 cho 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 của tệp mà máy chủ nhận được. Hãy thử tải 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 một URL không hợp lệ sẽ dẫn đến việc IllegalArgumentException bị gửi đi. Đối số cho 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>