Si en C++, et visiblement en D, on indique la capacité à lancer des exceptions (et lesquelles), c'est pour garantir un contrat.
Il me semble que les compilateurs C++ utilisent ces infos pour optimiser, pas pour faire de la vérification — il y a d'ailleurs une exception bad_exception qui signale les exceptions non prévues!
C'est très important pour une fonction utilisée dans un destructeur, par exemple. Et ça, le compilateur ne peut pas le deviner tout seul lors de la compilation de la fonction.
Théoriquement rien n'empêche le compilateur de le savoir, mais il faudrait avoir une notion de fichier objet pour les headers — pour retenir l'information calculée — qui devraient être distribués avec les bibliothèques. (Il faut connaître le header et le code pour faire la déduction correcte.)
[^] # Re: Y'a-t-il encore besoin de nouveaux langages "bas niveau"?
Posté par Michaël (site web personnel) . En réponse à la dépêche Le langage D. Évalué à 2. Dernière modification le 12 juin 2012 à 07:39.
Il me semble que les compilateurs C++ utilisent ces infos pour optimiser, pas pour faire de la vérification — il y a d'ailleurs une exception bad_exception qui signale les exceptions non prévues!
Théoriquement rien n'empêche le compilateur de le savoir, mais il faudrait avoir une notion de fichier objet pour les headers — pour retenir l'information calculée — qui devraient être distribués avec les bibliothèques. (Il faut connaître le header et le code pour faire la déduction correcte.)