CompletableFuture: Dominando o Tratamento de Exceções

Tempo de leitura: 2 min

Escrito por Michel Adriano Medeiros
em 21/10/2024

Dominando o Tratamento de Exceções com CompletableFuture no Java 8

Introdução:

Tratar exceções na programação assíncrona pode ser complicado, sobretudo ao usar as funcionalidades oferecidas no Java 8. Embora esse recurso facilite a execução de tarefas assíncronas e a combinação de resultados, lidar com erros nesse contexto exige uma abordagem cuidadosa. Portanto, neste post, vamos explorar como gerenciar exceções de forma eficiente usando ferramentas como o CompletableFuture, a fim de garantir uma execução mais suave e confiável em seu código.

O que é CompletableFuture?

No Java 8, o CompletableFuture é um recurso poderoso para programação assíncrona. Em primeiro lugar, ele permite executar tarefas de maneira não bloqueante, além de combinar várias operações e lidar com seus resultados. No entanto, o tratamento de exceções nesse contexto pode ser mais complexo, especialmente quando comparado ao código síncrono.

Tratamento de Exceções com CompletableFuture

Ao trabalhar com esse recurso, é crucial tratar as exceções para evitar falhas silenciosas em seu código. A seguir, estão três maneiras principais de gerenciar exceções:

Usando Exceptionally() no CompletableFuture

Esse método trata exceções retornando um valor ou lógica alternativa, caso uma exceção seja lançada.
Por exemplo:

Usando Handle() no CompletableFuture

O método handle() permite processar o resultado da operação, incluindo possíveis exceções. Dessa forma, ele é útil quando você deseja lidar tanto com o resultado quanto com o erro em um único método.
Exemplo:

Usando WhenComplete() no CompletableFuture

Esse método permite lidar com os casos de sucesso e falha sem alterar o resultado final do CompletableFuture. Portanto, ele é útil quando você deseja apenas realizar uma ação baseada no sucesso ou falha da operação, sem modificar o valor retornado.
Exemplo:

Combinando Métodos de Tratamento de Exceções no CompletableFuture

Você pode combinar esses métodos de tratamento de exceções para criar uma estratégia de erro mais robusta ao usar o CompletableFuture. Por exemplo, você pode usar exceptionally() para capturar uma exceção e whenComplete() para registrar o erro sem alterar o resultado. Assim, você oferece flexibilidade para personalizar o tratamento de erros de acordo com as necessidades do sistema.

Tratamento de Exceções Checadas no CompletableFuture

As exceções checadas do Java, como IOException, adicionam outra camada de complexidade ao uso de operações assíncronas. Visto que o CompletableFuture não lida nativamente com exceções checadas, você precisa encapsulá-las em uma RuntimeException para que possam ser tratadas adequadamente dentro do fluxo de execução.
Exemplo:

Conclusão

O tratamento de exceções é uma habilidade essencial para qualquer desenvolvedor que trabalha com código assíncrono no Java. Com métodos como exceptionally(), handle(), e whenComplete(), você pode gerenciar erros de forma eficiente, garantindo que seu código seja resiliente e fácil de manter. Além disso, ao combinar essas abordagens, você pode lidar com a maioria dos cenários que surgem em operações assíncronas, desde exceções não verificadas até exceções checadas, o que aumenta a robustez do seu código.

Links

Vantagens da Abordagem Try-Catch

Java para Iniciantes

Você vai gostar também:

Para enviar seu comentário, preencha os campos abaixo:

Deixe um comentário


*


*


Seja o primeiro a comentar!

Damos valor à sua privacidade

Nós e os nossos parceiros armazenamos ou acedemos a informações dos dispositivos, tais como cookies, e processamos dados pessoais, tais como identificadores exclusivos e informações padrão enviadas pelos dispositivos, para as finalidades descritas abaixo. Poderá clicar para consentir o processamento por nossa parte e pela parte dos nossos parceiros para tais finalidades. Em alternativa, poderá clicar para recusar o consentimento, ou aceder a informações mais pormenorizadas e alterar as suas preferências antes de dar consentimento. As suas preferências serão aplicadas apenas a este website.

Cookies estritamente necessários

Estes cookies são necessários para que o website funcione e não podem ser desligados nos nossos sistemas. Normalmente, eles só são configurados em resposta a ações levadas a cabo por si e que correspondem a uma solicitação de serviços, tais como definir as suas preferências de privacidade, iniciar sessão ou preencher formulários. Pode configurar o seu navegador para bloquear ou alertá-lo(a) sobre esses cookies, mas algumas partes do website não funcionarão. Estes cookies não armazenam qualquer informação pessoal identificável.

Cookies de desempenho

Estes cookies permitem-nos contar visitas e fontes de tráfego, para que possamos medir e melhorar o desempenho do nosso website. Eles ajudam-nos a saber quais são as páginas mais e menos populares e a ver como os visitantes se movimentam pelo website. Todas as informações recolhidas por estes cookies são agregadas e, por conseguinte, anónimas. Se não permitir estes cookies, não saberemos quando visitou o nosso site.

Cookies de funcionalidade

Estes cookies permitem que o site forneça uma funcionalidade e personalização melhoradas. Podem ser estabelecidos por nós ou por fornecedores externos cujos serviços adicionámos às nossas páginas. Se não permitir estes cookies algumas destas funcionalidades, ou mesmo todas, podem não atuar corretamente.

Cookies de publicidade

Estes cookies podem ser estabelecidos através do nosso site pelos nossos parceiros de publicidade. Podem ser usados por essas empresas para construir um perfil sobre os seus interesses e mostrar-lhe anúncios relevantes em outros websites. Eles não armazenam diretamente informações pessoais, mas são baseados na identificação exclusiva do seu navegador e dispositivo de internet. Se não permitir estes cookies, terá menos publicidade direcionada.

Visite as nossas páginas de Políticas de privacidade e Termos e condições.

Importante: Este site faz uso de cookies que podem conter informações de rastreamento sobre os visitantes.
Criado por WP RGPD Pro