Comment est implémenté throw ? [C++] - C++ - Programmation
Marsh Posté le 04-06-2002 à 10:53:01
un lien interessant:
http://www.codeproject.com/cpp/exceptionhandler.asp
Marsh Posté le 04-06-2002 à 11:15:54
Niveau "Advanced", je suis gâté !
Stack unwinding, déroulage de pile, voilà l'expression, le coeur du problème.
Je reviendrai quand j'aurais tout bien compris.
Marsh Posté le 27-07-2002 à 00:35:28
Bon, ben je ne dirait pas que j'ai tout compris, ce serait présomptueux.
J'ai noté plusieurs choses quand même:
Marsh Posté le 04-06-2002 à 10:43:12
Quand une exception est lancée, les destructeurs des objets de pile crées entre le try et le throw sont correctement appelés.
Comment cela est-il géré ?
En effet, à la compilation, le throw ne sait pas combien d'appels de fonction auront eu lieu, ni combien de bloc de code auront été "entrés".
Il y a donc un mécanisme à l'éxécution à l'oeuvre.
Le plus logique serait que les constructeurs/destructeurs déposent/enlèvent leur identifiant dans une pile à part.
Mais on peut compiler du code en intégrant du code déjà compilé avec un autre compilateur, qui ne gère peut-être pas le throw de la même manière, voire ne le gère pas du tout.
Alors, comment ça marche ?
---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone