Maison > Java > javaDidacticiel > Comment puis-je gérer les exceptions vérifiées lors de l'utilisation d'expressions Lambda dans Java 8 ?

Comment puis-je gérer les exceptions vérifiées lors de l'utilisation d'expressions Lambda dans Java 8 ?

Susan Sarandon
Libérer: 2024-12-27 20:06:14
original
937 Les gens l'ont consulté

How Can I Handle Checked Exceptions When Using Lambda Expressions in Java 8?

Intégration des exceptions dans les fonctions Lambda dans Java 8

Dans Java 8, les expressions lambda fournissent un moyen concis de représenter les références de méthodes. Cependant, lorsque vous rencontrez des méthodes susceptibles de générer des exceptions vérifiées, la syntaxe lambda par défaut devient insuffisante.

Le défi des exceptions avec les fonctions Lambda

Considérez la méthode suivante :

Integer myMethod(String s) throws IOException
Copier après la connexion

Création d'une référence lambda à cette méthode en utilisant la syntaxe Function échouera car le lambda ne prend pas en compte l'exception potentielle vérifiée.

Gestion des exceptions dans les fonctions Lambda

Pour résoudre ce problème, plusieurs approches sont disponibles :

1. Définir une interface fonctionnelle personnalisée :

Si la méthode est sous votre contrôle, il est recommandé de définir une interface fonctionnelle personnalisée qui déclare l'exception vérifiée :

@FunctionalInterface
public interface CheckedFunction<T, R> {
   R apply(T t) throws IOException;
}
Copier après la connexion

Cette interface peut ensuite être utilisé comme type lambda :

void foo (CheckedFunction<String, Integer> f) { ... }
Copier après la connexion

2. Encapsuler la méthode d'origine :

Si la modification de la méthode d'origine n'est pas réalisable, vous pouvez l'envelopper avec une nouvelle méthode qui ne lève pas d'exception vérifiée :

public Integer myWrappedMethod(String s) {
    try {
        return myMethod(s);
    }
    catch(IOException e) {
        throw new UncheckedIOException(e);
    }
}
Copier après la connexion

L'encapsulé La méthode peut alors être référencée par un lambda :

Function<String, Integer> f = (String t) -> myWrappedMethod(t);
Copier après la connexion

3. Gestion des exceptions dans le Lambda :

Vous pouvez également gérer l'exception dans le lambda lui-même :

Function<String, Integer> f =
    (String t) -> {
        try {
           return myMethod(t);
        }
        catch(IOException e) {
            throw new UncheckedIOException(e);
        }
    };
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal