Je suis assez d'accord avec ça... Il y a peut être des cas où la gestion exhaustive des erreurs a un sens, mais le plus souvent, l'environnement d'une fonction garantit l'absence de certaines erreurs, ou ne les fait apparaitre qu'en cas de disfonctionnement en amont (qui doit être traité en amont).
Tester les erreurs systématiquement, tout le long de la chaine, ca rend le code bêtement illisible, sans pour autant le sécuriser. Et ca donne un peu l'impression que le programmeur est soit terrifié, soit a eu la flemme de démonter les échafaudages une fois le programme mis au point.
Quant aux exceptions, mon principal problème, ce sont les grands "try" qui essaient d'attraper "tout ce qui pourrait mal se passer". Une erreur quelconque, ce n'est pas gérable, et ces try ne servent souvent qu'à quitter l'appli sans message d'erreur. Comme gestion d'erreur, c'est très pauvre.
Idéalement, on doit être capable de spécifier les erreurs possibles, et donc de les tester au moment où elles peuvent se produire. Et dans ce contexte, les exceptions sont moins utiles. (Je ne parle pas de la mise au point: pour cela on a assert et autres échafaudages temporaires)
Francois