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
Susan Sarandonoriginal
2024-12-27 20:06:14941parcourir

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

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;
}

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

void foo (CheckedFunction<String, Integer> f) { ... }

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);
    }
}

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

Function<String, Integer> f = (String t) -> myWrappedMethod(t);

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);
        }
    };

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