Dans un contexte de programmation structuré, ils seraient génant a priori puisque ce sont aussi des sauts (et pire, des changements d'environnement d'exécution). D'ailleurs plusieurs auteurs ont souligné que l'abus d'exceptions (qui s'inscrivent dans l'optique de la programmation par continuations) est nuisibles à la logique du programme. Ceux qui suivent les discutions sur la partie fonctionnelle ont peut être remarqué pourtant que j'apprécie ce mode de programmation. Mais on sort de la programmation structurée. Cependant, bien utilisées, les exceptions font merveilles. La différence avec les boucles infinis sont de deux ordres.
1) d'abord, j'ai soutenu que contrairement à ce que beaucoup disent, il n'y a pas grande perte de lisibilité (en général) à revoir sa conception pour faire disparaître les boucles infinis. À mon avis, c'est beaucoup moins clair (pour moi du moins) avec les exceptions.
2) ensuite et surtout, les exceptions sont moins dangereuses que les boucles infinies et sont rarement due à un certain laxisme ou manque de connaissance en logique du développeur. C'est ce laxisme qui les rend dangereux, comme le goto l'est.