@floyer : en C++, lancer une exception, ce n'est pas juste un petit longjump. Il faut trouver le bon bloc
catch, qui peut être plusieurs niveaux au dessus dans le code appelant. Et, quand on remonte dans la pile, il faut au passage appeler les destructeurs de toutes les variables locales. Pour compliquer le tout, la sélection du bon bloc
catch se fait par un mécanisme de sous-typage et fait intervenir le RTTI.
Les exceptions du C++ ne respectent par le principe
no overhead du C++. Pour cette raison, Herb Sutter avait soumis sa proposition
P0709R0 intitulée
Zero-overhead deterministic exceptions: Throwing values.
Partager