Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2839 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [C++]Comment est implémenté throw ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C++]Comment est implémenté throw ?

n°150701
Musaran
Cerveaulté
Posté le 04-06-2002 à 10:43:12  profilanswer
 

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
mood
Publicité
Posté le 04-06-2002 à 10:43:12  profilanswer
 

n°150727
LeGreg
Posté le 04-06-2002 à 10:53:01  profilanswer
 
n°150757
Musaran
Cerveaulté
Posté le 04-06-2002 à 11:15:54  profilanswer
 

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.


---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone
n°184119
Musaran
Cerveaulté
Posté le 27-07-2002 à 00:35:28  profilanswer
 

Bon, ben je ne dirait pas que j'ai tout compris, ce serait présomptueux.
 
J'ai noté plusieurs choses quand même:

  • Il s'agit de la solution Visual C++ qui s'appuie sur les exceptions de Windows. Y aurait-il des appels systèmes cachés ?  
  • Cela me semble bien lourd, or Bjarne affirme que les exceptions peuvent être implémentées de façon très efficaces.
  • Les constructeurs semblent recevoir un traitement spécial, je croyais que le mécanisme général des fonctions s'appliquaient.
  • Les informations d'exceptions sont entremêlées dans la pile. Je pensais plus à un système de pile parallèle.
  • Qu'advient-il de l'incorporation de code compilé sans gestion d'exception ?


---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [C++]Comment est implémenté throw ?

 

Sujets relatifs
message d'erreur perso avec try catch throw en JavaScript!! 
Plus de sujets relatifs à : [C++]Comment est implémenté throw ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR