infireman, merci de l'avertissement. Cependant, autant c'est vrai dans les cas generaux, ca ne l'est pas forcement dans les cas particulier.
Pour commencer, si la performance etait une contrainte principale de mon application, probablement, je ne l'ecrirais pas en Java.
Mais de facon general, aucune application n'est ecrite avec un seul but. Il y a toujours un compromis entre fonctionallite, maintenance, cout de developpement, et performance. (Et plein d'autre chose certainement.) En l'occurence le code ou mon probleme apparait est dans le sous systeme d'IO de mon application. Les systemes d'IO sont lent pour commencer. Au plus bas mots, tu payes une latence disque, sans meme compter le nombre de context switch a chaque fois qu'il faut retomber en espace noyaux pour lire le bout de donnee qui suit. L'overhead du handler d'exception est relativement faible en comparaison.
Aussi, les flots de controles hasardeux ne sont un probleme que pour des applications mal ecrite. En C++ par exemple, adherer aux principes RAII rends les codes plus facile a lire en presence d'exception que les codes equivalent sans exceptions. Ca diminue significativement le nombre de branchement de code qui servent a gerer les cas exceptionnel et la maintenabilite du code augmente. De toute facon si ce sont des questions particulierement importantes, on utilisera des fuzzers et des outils de couverture de code pour s'assurer d'avoir des tests complets.
Dans les codes orientes objets, les exceptions permettent d'assurer que si l'objet est construit, alors il est construit correctement. Je peux utiliser l'objet sans avoir a me demander avant chaque utilisation que l'objet et les fonctions que j'utilise de l'objet sont semantiquement correctes. Des semantiques simples rendent la programmation beaucoup plus abordable a des developpeurs moins experimente. Ca permet de laisser les codes simples a ecrire a des developpeur juniors qui ont juste besoin d'etre relu et valide par un developpeur experimente.
En bref, si je perd 5% de performance (que je ne suis pas sur qu'on perd avec des exceptions en general) et que je gagne 3 ordres de magnitude en programmabilite et maintenance, j'appelle pas ca un probleme, j'appelle ca une opportunite.