Lancement d'exceptions dans Lambdas
- Une expression lambda peut lever des exceptions.
- Pour les exceptions vérifiées :
- L'exception levée doit être compatible avec celles listées dans la clause throws de la méthode abstraite de l'interface fonctionnelle.
Exigences pour les exceptions vérifiées
- Si lambda lève une exception vérifiée (par exemple IOException) :
- La méthode abstraite de l'interface fonctionnelle doit inclure la même exception dans la clause throws.
- Sans cette clause, l'expression lambda sera incompatible avec la méthode et provoquera une erreur de compilation.
Exemple : lancement d'exception dans Lambda
Code :
import java.io.*;
interface MyIOAction {
boolean ioAction(Reader rdr) throws IOException;
}
class LambdaExceptionDemo {
public static void main(String args[]) {
// Esta lambda de bloco pode lançar uma IOException.
// A cláusula throws deve estar presente em ioAction().
MyIOAction myIO = (rdr) -> {
int ch = rdr.read(); // Pode lançar IOException
// Lógica adicional pode ser inserida aqui
return true;
};
}
}
Copier après la connexion
Explication :
lance la clause :
- La méthode ioAction(Reader rdr) dans l'interface fonctionnelle MyIOAction inclut les IOExceptions.
- Cela permet au lambda associé à la méthode d'utiliser des opérations qui peuvent lancer IOException, telles que rdr.read().
Erreur sans lancer Clause :
- Si la clause throws IOException est supprimée de ioAction, le programme ne se compile pas.
- Cela se produit car l'exception levée par la lambda (IOException) n'est pas gérée ou déclarée dans la méthode.
Remarque importante :
- Compatibilité entre Lambdas et interfaces fonctionnelles :
- Une expression lambda doit être compatible avec la méthode abstraite de l'interface fonctionnelle.
- Pour les exceptions vérifiées, cette compatibilité nécessite que les exceptions levées par le lambda soient répertoriées dans la clause throws de la méthode.
Test pratique :
Essayez de supprimer la clause throws de ioAction dans le code ci-dessus. Cela entraînera une erreur de compilation en raison d'une incompatibilité entre lambda et la méthode d'interface fonctionnelle.
![Lance uma exceção de dentro de uma expressão lambda](/static/imghw/default1.png)
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!