Lorsqu'une exception se produit , il y aura une surcharge de temps qui dépend de la façon dont vous mettez en œuvre votre gestion des exceptions. Mais, d'être anecdotique, la gravité d'un événement qui devrait provoquer une exception prendra autant de temps à la poignée à l'aide de toute autre méthode. Pourquoi ne pas utiliser le grand soutien de la langue de base de la méthode de traiter ces problèmes?
Le compilateur GNU C++ utilise le zéro–modèle de coût par défaut, c'est à dire il n'y a pas de temps de charge lorsque les exceptions ne se produisent pas.
Puisque l'information sur l'exception de code de traitement et les décalages d'objets locaux peut être calculé une fois au moment de la compilation, de telles informations peuvent être gardés dans un seul lieu associé à chaque fonction, mais pas dans chaque ARI. Vous essentiellement retirer exception de frais généraux de chaque ARI et d'éviter ainsi le temps de pousser sur la pile. Cette méthode est appelée à coût zéro modèle de gestion des exceptions, et l'optimisation du stockage mentionné plus tôt, est connu comme l'ombre de la pile. - Bruce Eckel, Penser en C++ Volume 2
La taille de la complexité de frais généraux n'est pas facilement quantifiable, mais Eckel états une moyenne de 5 et 15 pour cent. Cela dépendra de la taille de votre code de gestion des exceptions dans le rapport à la taille de votre code d'application. Si votre programme est petit, puis les exceptions seront d'une grande partie de la binaire. Si vous utilisez un coût zéro modèle que les exceptions prendra plus de place pour supprimer la surcharge de temps, donc si vous vous souciez de l'espace et pas le temps de ne pas utiliser de coût zéro de la compilation.
Mon avis est que la plupart des systèmes embarqués d'avoir beaucoup de mémoire au point que, si votre système possède un compilateur C++ vous avez suffisamment d'espace pour y inclure des exceptions. Le PC/104 ordinateur que mon projet utilise a plusieurs GO de mémoire secondaire, 512 MO de mémoire principale, donc pas de problème d'espace pour les exceptions, même si, de nos micorcontrollers sont programmé en C. Mon heuristique est "si il y a un grand compilateur C++ pour cela, utiliser des exceptions, sinon utilisez C".