Les périls de « Throw » dans les signatures de fonction
Bien qu'il puisse être tentant d'incorporer le mot-clé « throw » dans une signature de fonction pour déclarent explicitement la possibilité d'exceptions, cette pratique est fortement déconseillée. Malgré son objectif apparemment simple, il existe plusieurs raisons techniques pour lesquelles cette approche est considérée comme un mauvais choix.
Limites du compilateur
Un problème important vient de l'incapacité du compilateur à appliquer spécifications d’exception déclarées dans les signatures de fonctions. Par conséquent, le compilateur ne peut pas vérifier que la fonction lèvera effectivement l’exception spécifiée. Cela conduit à des signatures potentiellement trompeuses, car la fonction peut en fait lancer une exception différente, voire aucune.
Inefficacité de l'exécution
Les spécifications d'exception sont vérifiées pendant l'exécution, imposant une surcharge de performances. Ceci est particulièrement indésirable par rapport aux mécanismes modernes de gestion des exceptions qui effectuent ces vérifications plus efficacement au moment de la compilation.
Implémentation incohérente
Les spécifications d'exception ont différents niveaux de prise en charge selon les différents compilateurs. Par exemple, MSVC ignore largement les spécifications d'exception, à l'exception du cas particulier de "throw()", qui est interprété comme une garantie qu'aucune exception ne sera levée. Cette incohérence crée des problèmes spécifiques à la plate-forme et complique la portabilité.
Alternatives aux spécifications d'exception
Compte tenu des inconvénients de l'utilisation de « throw » dans les signatures de fonction, il est recommandé d'adopter approches alternatives pour la gestion des exceptions. Ceux-ci incluent :
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3