Pauvres implémentations de gestionnaires d'exceptions pousser une sorte de bloc de gestionnaire d'exceptions pour chaque essai, clause relative à l'exécution de la pile comme l'essai, la clause est entré, et de la pop comme les essayer clause est sorti. Un emplacement en tenant l'adresse de la plus récemment poussé gestionnaire d'exception bloc est également maintenue. Généralement, ces gestionnaires d'exception sont enchaînés, de sorte qu'ils peuvent être trouvé en suivant les liens de la plus récente à des versions plus anciennes. Lorsqu'une exception se produit, un pointeur vers le dernier-poussé HEIN gestionnaire de bloc est trouvé, et le traitement de ce "essayer" de la clause HEIN cas est vérifié. Un coup sur un HEIN cas, les causes de la pile de nettoyage à se produire de nouveau au point de pousser HEIN, et le contrôle des transferts de l'HEIN cas. Pas de coups sur la HEIN la prochaine HEIN, et le processus se répète. Les 32 bits de Windows SEH régime est une version de ce.
C'est une mauvaise mise en œuvre, car le programme de paie à l'exécution de prix pour chaque essai, la clause (pousser puis pop), même si aucune exception ne se produit.
Bonnes implémentations simplement d'enregistrer une table de plages où essayer des clauses de se produire. Cela signifie qu'il n'y aucun frais généraux pour entrer/sortir d'un essai de la clause. (Mon PARLANSE parallèle de la programmation de langue utilise cette technique). Une exception semble que le PC de l'exception point dans le tableau, et passe le contrôle à la HEIN sélectionné par la table. EH code réinitialise la pile appropriée. Rapide et jolie.
Je pense que le 64 bits de Windows HEIN est de ce type, mais je n'ai pas regardé attentivement.