À de nombreux endroits, je reçois plusieurs exceptions cochés comme IOException, ParseException, JSONException, etc. je devais faire l'un des 2 choix -Lancer exception vérifiée vs Lancer un RuntimeException enveloppé
Jetez la même exception par ajouter des lancers à la fin de la signature de la méthode. Enveloppez l'exception vérifiée dans une exception RuntimeException (ou une implémentation personnalisée), puis lancez-la afin que l'appelant n'ait pas besoin d'ajouter une clause throws partout et de vérifier les exceptions.
Dans le premier cas, je vais devoir mettre jette partout, mais mon client peut décider de ne pas mourir en attrapant le checkedException et continuer à travailler. Dans le second cas, cependant, RuntimeException peut réellement forcer le client à échouer, car généralement les gens n'attrapent pas Generic/RuntimeExceptions partout. L'utilisation de la 2ème approche facilite également l'utilisation de Java 8 lambdas qui ne fonctionne pas correctement avec les exceptions vérifiées.
Lequel des deux est préféré à un autre et pourquoi? Y a-t-il une pratique préférée à suivre?
Je ne pense pas qu'il y ait une réponse * right *, mais si vous regardez Spring Framework, la tendance est d'encapsuler les exceptions vérifiées sous une exception d'exécution. Documentez via JavaDoc ou la clause throws ce qui pourrait être appelé si les clients veulent le gérer, ils le peuvent. – JustinKSU
@wero c'est une très mauvaise pratique, car elle inclura des exceptions que vous ne lancez pas actuellement, mais le ferait si votre implémentation change, et devrait être gérée de manière spécifique. L'exemple évident est InterruptedException. –
@wero pourquoi me considérez-vous comme un hypocrite? Voulez-vous simplement dire que vous n'êtes pas d'accord? Je ne suis pas hypocrite (sur ce point, au moins): je pratique ce que je préconise. –