Fonctions Lambda avec gestion des exceptions dans Java 8
Les expressions Lambda permettent un code concis et élégant, mais elles ne prennent pas en charge les exceptions vérifiées. Cette limitation pose un défi lorsque vous travaillez avec des méthodes qui génèrent des exceptions.
Considérez l'exemple suivant :
Integer myMethod(String s) throws IOException
Comment pouvez-vous définir une référence lambda à cette méthode ?
La solution dépend du scénario :
Définir une interface fonctionnelle personnalisée avec coché Exception :
Si vous contrôlez le code, vous pouvez créer 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; }
Ensuite, utilisez cette interface dans votre code :
void foo(CheckedFunction<String, Integer> f) { ... }
Enveloppez la méthode dans une méthode sans exception Version :
Si vous ne pouvez pas modifier la méthode, enveloppez-la dans une nouvelle méthode qui ne déclare pas d'exception vérifiée :
public Integer myWrappedMethod(String s) { try { return myMethod(s); } catch (IOException e) { throw new UncheckedIOException(e); } }
Ensuite, créez la référence lambda :
Function<String, Integer> f = (String t) -> myWrappedMethod(t);
Vous pouvez également utiliser une expression lambda entourée de curl accolades :
Function<String, Integer> f = (String t) -> { try { return myMethod(t); } catch (IOException e) { throw new UncheckedIOException(e); } };
En comprenant ces techniques, vous pouvez gérer efficacement les exceptions vérifiées tout en utilisant les fonctions lambda dans Java 8.
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!