Как обрабатывать ошибки Cloud Storage на Android

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

Если вы не уверены, проверьте возвращенную ошибку и посмотрите, что говорится в сообщении об ошибке. В следующем примере кода показана реализация специального обработчика ошибок, который проверяет код ошибки и сообщение об ошибке, возвращенные Cloud Storage. Такие обработчики можно добавлять к различным объектам, используемым в Cloud Storage API (например, 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 for Firebase требуется тарифный план Blaze с оплатой по мере использования. Если вы видите эту ошибку в проекте с тарифным планом Spark, вам нужно перейти на тарифный план Blaze, чтобы восстановить доступ. Подробную информацию вы найдете в разделе часто задаваемых вопросов.
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>.