Maison >Java >javaDidacticiel >Comment gérer les exceptions vérifiées dans les expressions Java 8 Lambda ?
Fonctions Lambda avec exceptions dans Java 8
Dans Java 8, les fonctions lambda peuvent être utilisées pour référencer des méthodes avec des signatures spécifiques. Cependant, lorsque la méthode référencée déclare une exception vérifiée, définir la référence lambda peut être difficile.
Problème
Considérez la méthode suivante qui prend une chaîne comme argument et renvoie un entier, mais peut lancer une IOException :
Integer myMethod(String s) throws IOException
Comment définir une référence lambda à cela méthode ?
Solution
Il existe deux approches principales pour gérer les exceptions dans les références lambda :
1. Interface fonctionnelle personnalisée
Si vous contrôlez le code, vous pouvez 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; }
Cela vous permet de créer des références aux méthodes qui lancent des exceptions vérifiées :
void foo (CheckedFunction f) { ... }
2. Encapsulation dans une méthode non vérifiée
Si la modification de la signature de la méthode n'est pas une option, vous pouvez envelopper la méthode vérifiée dans une 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); } }
Vous pouvez alors référencer la méthode enveloppée :
Function<String, Integer> f = (String t) -> myWrappedMethod(t);
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!