Mon calendrier de l’avent – jour 18
Java est un langage qui a maintenant prés de trente ans, et qui en trente ans a subi un certain nombre de modes. Et certaines décisions initiales sont, encore aujourd’hui, considérées comme … houleuses. La plus douteuse est évidement la distinction entre checked et unchecked exceptions. Aujourd’hui, qu’on apprécie ou pas le concept, le consensus est que les checked exceptions ont échoué. Le problème, c’est qu’il faut vivre avec cette décision très structurante. Et dans le monde des lambdas, c’est vraiment pénible, parce qu’il faut mettre des try/catch partout. D’autant plus qu’en fait l’obligation de catcher les exceptions disparaît à l’exécution !
Heureusement, on peut résoudre ça simplement avec des projets comme throwing-lambdas. Celui-ci permet, en entourant votre lambda par un appel de méthode (qui ne fait rien) de faire disparaître l’exception checked de votre signature, et donc de faire les choses dans le respect de la lettre de Java. Et bien sûr, si une exception arrive, elle remonte tranquillement la pile d’appels.
En relisant mes notes dans Shaarli, je me rends compte qu’il y a enf ait un équivalent dans Apache commons lang : Failable. Alors laissez tomber throwing-lambdas, et utilisez plutôt Failable !
#exception #java