Обработка ошибок облачного хранилища на Android

Иногда что-то идёт не по плану, и возникает ошибка.

В случае сомнений проверьте возвращаемую ошибку и посмотрите, что говорится в сообщении об ошибке. Следующий код демонстрирует реализацию пользовательского обработчика ошибок, который проверяет код ошибки и сообщение об ошибке, возвращаемые Cloud Storage . Такие обработчики ошибок можно добавить к различным объектам, используемым в API Cloud Storage (например, UploadTask и FileDownloadTask ).

Kotlin

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
    }
}

Если вы проверили сообщение об ошибке и у вас есть Cloud Storage Security Rules , разрешающие ваши действия, но вы все еще не можете исправить ошибку, посетите нашу страницу поддержки и сообщите нам, чем мы можем вам помочь.

Обработка сообщений об ошибках

Ошибки могут возникать по ряду причин, включая отсутствие файла, отсутствие у пользователя прав доступа к нужному файлу или отмену пользователем загрузки файла.

Для правильной диагностики проблемы и обработки ошибки ниже приведён полный список всех ошибок, которые может вызвать наш клиент, и описание того, как они могут возникнуть. Коды ошибок в этой таблице определены в классе StorageException как целочисленные константы.

Код Причина
ERROR_UNKNOWN Произошла неизвестная ошибка.
ERROR_OBJECT_NOT_FOUND Объект по указанной ссылке отсутствует.
ERROR_BUCKET_NOT_FOUND Для Cloud Storage не настроен ни один сегмент.
ERROR_PROJECT_NOT_FOUND Для Cloud Storage не настроен ни один проект.
ERROR_QUOTA_EXCEEDED Квота в вашем хранилище Cloud Storage превышена. Если вы используете тарифный план Spark, рассмотрите возможность перехода на тарифный план Blaze с оплатой по мере использования . Если вы уже используете тарифный план Blaze, обратитесь в службу поддержки Firebase.

Важно : начиная со 2 февраля 2026 года , для использования тарифного плана Blaze потребуется Cloud Storage , даже для стандартных сегментов.
ERROR_NOT_AUTHENTICATED Пользователь не авторизован, пожалуйста, пройдите авторизацию и попробуйте снова.
ERROR_NOT_AUTHORIZED Пользователь не авторизован для выполнения запрошенного действия. Проверьте свои правила, чтобы убедиться в их корректности.
ERROR_RETRY_LIMIT_EXCEEDED Превышен максимальный лимит времени для выполнения операции (загрузка, скачивание, удаление и т. д.). Попробуйте снова.
ERROR_INVALID_CHECKSUM Контрольная сумма файла на стороне клиента не совпадает с контрольной суммой файла, полученного сервером. Попробуйте загрузить файл еще раз.
ERROR_CANCELED Пользователь отменил операцию.

Кроме того, попытка вызвать getReferenceFromUrl() с недопустимым URL-адресом приведет к возникновению исключения IllegalArgumentException . Аргумент указанного выше метода должен иметь вид gs://bucket/object или https://firebasestorage.googleapis.com/v0/b/bucket/o/object?token=<TOKEN>