Maison  >  Article  >  Java  >  Comment utiliser les fonctions whenComplete et exceptionnellement de CompletableFuture pour la gestion des exceptions en Java

Comment utiliser les fonctions whenComplete et exceptionnellement de CompletableFuture pour la gestion des exceptions en Java

王林
王林original
2023-06-26 15:00:172343parcourir

Dans la programmation asynchrone Java, CompletableFuture est une classe très utile. Elle peut nous aider à effectuer des rappels une fois l'opération asynchrone terminée et dispose d'un bon mécanisme de gestion des exceptions. Cet article explique comment utiliser les fonctions whenComplete et exceptionnellement de CompletableFuture pour la gestion des exceptions.

  1. La fonction whenComplete de CompletableFuture

La fonction whenComplete de CompletableFuture est une fonction de rappel, qui sera appelée lorsque l'opération asynchrone est terminée. Lorsque l'opération asynchrone se termine normalement, lorsque le premier paramètre de Complete est le résultat de l'opération asynchrone, nous pouvons opérer sur le résultat dans la fonction de rappel. Lorsqu'une opération asynchrone échoue, elle transmet l'exception à la fonction de rappel comme deuxième paramètre de whenComplete.

Exemple de code :

CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> {
    return "hello world";
});
future.whenComplete((result, throwable) -> {
    if (throwable == null) {
        System.out.println("result: " + result);
    } else {
        System.out.println("exception: " + throwable.getMessage());
    }
});

Dans le code ci-dessus, nous créons d'abord une instance CompletableFuture et utilisons la méthode supplyAsync pour exécuter de manière asynchrone une tâche, qui renvoie une chaîne "hello world". Nous utilisons la fonction whenComplete comme fonction de rappel pour traiter l'opération asynchrone une fois qu'elle est terminée. Si l'opération asynchrone se termine normalement, nous imprimons le résultat ; si l'opération asynchrone échoue, nous imprimons les informations sur l'exception.

  1. Fonction exceptionnelle de CompletetableFuture

La fonction exceptionnelle de CompletetableFuture est également une fonction de rappel, mais elle ne sera appelée que lorsqu'une exception se produit dans l'opération asynchrone. Sa valeur de retour est une nouvelle instance CompletableFuture pour gérer les situations d'exception. Nous pouvons gérer les exceptions dans la fonction exceptionnellement et renvoyer une valeur par défaut ou une autre valeur.

Exemple de code :

CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> {
    throw new RuntimeException("exception occurred");
});
CompletableFuture<String> result = future.exceptionally(throwable -> {
    return "default value";
});
result.whenComplete((value, throwable) -> {
    if (throwable == null) {
        System.out.println("result: " + value);
    } else {
        System.out.println("exception: " + throwable.getMessage());
    }
});

Dans le code ci-dessus, nous utilisons la méthode supplyAsync pour effectuer une tâche qui lèvera une exception. Nous utilisons la fonction exceptionnellement pour gérer les exceptions, et sa valeur de retour est une nouvelle instance CompletableFuture. Dans la fonction de rappel, nous pouvons traiter les résultats. Si l'exception n'est pas interceptée, nous imprimerons les informations sur l'exception ; si l'exception est interceptée et gérée, nous imprimerons la valeur par défaut renvoyée.

Résumé

Cet article explique comment utiliser les fonctions whenComplete et exceptionnellement de CompletableFuture pour la gestion des exceptions. L'utilisation de la fonction de rappel asynchrone et du mécanisme de gestion des exceptions de CompletableFuture peut considérablement améliorer l'efficacité et la fiabilité de la programmation asynchrone de Java.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn