Maison > Java > javaDidacticiel > Comment puis-je gérer les exceptions vérifiées dans les fonctions Java 8 Lambda ?

Comment puis-je gérer les exceptions vérifiées dans les fonctions Java 8 Lambda ?

Barbara Streisand
Libérer: 2024-12-20 16:54:15
original
1081 Les gens l'ont consulté

How Can I Handle Checked Exceptions in Java 8 Lambda Functions?

Fonctions Lambda et gestion des exceptions dans Java 8

Dans Java 8, les fonctions lambda fournissent une syntaxe concise pour définir les types de fonctions. Cependant, un problème courant survient lors de l'utilisation de fonctions lambda qui peuvent potentiellement générer des exceptions vérifiées.

Considérez la fonction lambda suivante qui renvoie une IOException :

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

Tentative de création d'une référence à cette exception La méthode utilisant l’interface Function standard entraînera une erreur de compilation. En effet, l'interface Function ne déclare aucune exception vérifiée, ce qui la rend incompatible avec des méthodes comme myMethod.

Pour résoudre ce problème, nous avons plusieurs options :

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

Si le code est sous votre contrôle, vous pouvez définir une interface fonctionnelle personnalisée qui déclare explicitement le coché exception. Par exemple :

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

Vous pouvez ensuite utiliser cette interface personnalisée pour référencer maMéthode :

void foo (CheckedFunction f) { ... }
Copier après la connexion
  1. Envelopper la méthode :

Vous pouvez également envelopper myMethod dans une nouvelle méthode qui ne lève pas d'exception vérifiée. Par exemple :

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

Maintenant, vous pouvez référencer cette méthode encapsulée à l'aide de l'interface de fonction :

Function<String, Integer> f = (String t) -> myWrappedMethod(t);
Copier après la connexion
  1. Corps Lambda qui gère les exceptions :

En dernière option, vous pouvez définir un corps de fonction lambda qui gère explicitement l'exception vérifiée. Par exemple :

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!

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