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 de erro e a mensagem retornados pelo Cloud Storage. Esses gerenciadores de erros podem ser adicionados a vários objetos usados na API Cloud Storage, como 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ê verificou a mensagem de erro e tem regras de segurança do Cloud Storage que permitem sua ação, mas ainda está com dificuldades para corrigir o erro, acesse nossa página de suporte e informe como podemos ajudar.

Tratar 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 desejada.
ERROR_BUCKET_NOT_FOUND Nenhum bucket configurado para o Cloud Storage.
ERROR_PROJECT_NOT_FOUND Nenhum projeto configurado para o Cloud Storage.
ERROR_QUOTA_EXCEEDED A cota do bucket do Cloud Storage foi excedida. Se você estiver no nível sem custo financeiro, faça upgrade para um plano pago. Se você já usa um plano pago, entre em contato com o suporte do Firebase.
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 desejada. Verifique suas regras para garantir que elas estejam 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>.