Tratar erros do Cloud Storage no Android

Às vezes, as coisas não saem como planejado e um erro ocorre.

Em caso de dúvida, verifique o erro retornado e veja o que diz a mensagem. O código a seguir mostra uma implementação personalizada do gerenciador de erros que inspeciona o código do erro e a mensagem de erro retornados pelo Cloud Storage. Esses gerenciadores de erros podem ser adicionados a vários objetos usados na API Cloud Storage (por exemplo, UploadTask e 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
    }
}

Se você verificar a mensagem de erro e tiver Cloud Storage Security Rules que permitam sua ação, mas ainda está com dificuldades para corrigir o erro, acesse nossa página de suporte e diga como podemos ajudar.

Solucionar mensagens de erro

Há diversos motivos pelos quais erros podem ocorrer, como um arquivo não existente, usuário sem permissão para acessar o arquivo desejado ou cancelamento do upload do arquivo por parte do usuário.

Para diagnosticar corretamente o problema e tratar o erro, veja a seguir uma lista completa de todos os erros informados por nosso cliente e como eles ocorrem. Os códigos de erro nesta tabela são definidos na classe StorageException como constantes inteiras.

Código Motivo
ERROR_UNKNOWN Ocorreu um erro desconhecido.
ERROR_OBJECT_NOT_FOUND Nenhum objeto na referência especificada.
ERROR_BUCKET_NOT_FOUND Não há buckets configurados para o Cloud Storage
ERROR_PROJECT_NOT_FOUND Não há projetos configurados para o Cloud Storage
ERROR_QUOTA_EXCEEDED A cota do seu bucket do Cloud Storage foi excedida. Se você estiver usando o plano de preços do Spark, considere fazer upgrade para o plano de preços do Blaze de pagamento por uso. Se você já estiver usando o plano de preços do Blaze, entre em contato com o suporte do Firebase.

Importante: a partir de 1º de outubro de 2025, o plano de preços do Blaze será obrigatório para usar Cloud Storage, mesmo em buckets padrão.
ERROR_NOT_AUTHENTICATED O usuário não está autenticado. Faça a autenticação e tente novamente.
ERROR_NOT_AUTHORIZED O usuário não está autorizado a executar a ação solicitada. Verifique se suas regras estão corretas.
ERROR_RETRY_LIMIT_EXCEEDED O limite de tempo em uma operação (upload, download, exclusão etc.) foi excedido. Tente novamente.
ERROR_INVALID_CHECKSUM O arquivo no cliente não corresponde à soma de verificação do arquivo recebido pelo servidor. Envie novamente.
ERROR_CANCELED O usuário cancelou a operação.

Além disso, se você tentar chamar getReferenceFromUrl() com um URL inválido, uma IllegalArgumentException será gerada. O argumento para o método acima precisa ter o formato gs://bucket/object ou https://firebasestorage.googleapis.com/v0/b/bucket/o/object?token=<TOKEN>.