Manejar errores para Cloud Storage en Android

A veces las cosas no salen según lo planeado y ocurre un error.

En caso de duda, verifique el error devuelto y vea lo que dice el mensaje de error. El siguiente código muestra una implementación de controlador de errores personalizado que inspecciona el código de error y el mensaje de error devuelto por Cloud Storage. Estos controladores de errores se pueden agregar a varios objetos utilizados en la API de Cloud Storage (por ejemplo, UploadTask y FileDownloadTask ).

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

Si revisó el mensaje de error y tiene reglas de seguridad de almacenamiento en la nube que permiten su acción, pero aún tiene dificultades para corregir el error, visite nuestra página de soporte y háganos saber cómo podemos ayudarlo.

Manejar mensajes de error

Hay varias razones por las que pueden ocurrir errores, incluido el archivo que no existe, que el usuario no tenga permiso para acceder al archivo deseado o que el usuario cancele la carga del archivo.

Para diagnosticar adecuadamente el problema y manejar el error, aquí hay una lista completa de todos los errores que generará nuestro cliente y cómo pueden ocurrir. Los códigos de error de esta tabla se definen en la clase StorageException como constantes enteras.

Código Razón
ERROR_UNKNOWN Un error desconocido ocurrió.
ERROR_OBJECT_NOT_FOUND No existe ningún objeto en la referencia deseada.
ERROR_BUCKET_NOT_FOUND No hay ningún depósito configurado para Cloud Storage
ERROR_PROJECT_NOT_FOUND No hay ningún proyecto configurado para Cloud Storage
ERROR_QUOTA_EXCEEDED Se superó la cuota en su depósito de Cloud Storage. Si estás en el nivel sin costo, actualiza a un plan pago. Si tienes un plan pago, comunícate con el soporte de Firebase.
ERROR_NOT_AUTHENTICATED El usuario no está autenticado, autentíquese e inténtelo nuevamente.
ERROR_NOT_AUTHORIZED El usuario no está autorizado a realizar la acción deseada, verifique sus reglas para asegurarse de que sean correctas.
ERROR_RETRY_LIMIT_EXCEEDED Se ha superado el tiempo máximo de una operación (carga, descarga, eliminación, etc.). Intentar otra vez.
ERROR_INVALID_CHECKSUM El archivo del cliente no coincide con la suma de comprobación del archivo recibido por el servidor. Intente cargar nuevamente.
ERROR_CANCELED El usuario canceló la operación.

Además, intentar llamar getReferenceFromUrl() con una URL no válida generará una excepción IllegalArgumentException . El argumento del método anterior debe tener el formato gs://bucket/object o https://firebasestorage.googleapis.com/v0/b/bucket/o/object?token=<TOKEN>