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

  FORUM HardWare.fr
  Programmation
  C++

  impossible de catcher une exception

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

impossible de catcher une exception

n°446022
hellbilly
free smile
Posté le 02-07-2003 à 10:33:40  profilanswer
 

salut,
 
J'utilise la lib glut pour avoir des progs portables sous win et linux. Comme glutMainLoop ne retourne jamais  :fou: , je lance une exception quand la touche echap est pressée ce qui me permet de quitter proprement l'application. Le problème c'est que sous linux l'exception n'est pas catchée (pas sous win). J'ai pourtant mis un try-catch au niveau du main pour etre sur.
La gestion des exceptions est différente ? J'ai loupé un truc ?
Sinon d'autres idées pour quitter normalement le prog ?
 
merci

mood
Publicité
Posté le 02-07-2003 à 10:33:40  profilanswer
 

n°446076
LetoII
Le dormeur doit se réveiller
Posté le 02-07-2003 à 11:08:59  profilanswer
 

Ben avec un chtit bout de code se serait plus facile.


---------------
Le Tyran
n°446086
Taz
bisounours-codeur
Posté le 02-07-2003 à 11:13:23  profilanswer
 

j'y connais rien mais j'ai vu qu'il y avait des bindings et pour le  C et pour le C++. si tu utilises les bindings C, les exceptions font planter... j'ai déjà eu ce problème insoluble quand on mix du C++ avec du un bibli graphique C, j'avais moi aussi pensé à l'exception comme sortie élégante, et j'étais tomber sur le même problème. donc j'ai laissé tomber tout ça. pour ton information, si tu es soucieux du C++, n'utilise jamais exit() par ce qu'en fait c'est tuer le programme: aucun destructeur n'est appelé ni rien ni rien. donc, j'ai vraiment laissé tomber tellement je trouvais pas de solution

n°446090
chrisbk
-
Posté le 02-07-2003 à 11:17:37  profilanswer
 

++Taz a écrit :

j'y connais rien mais j'ai vu qu'il y avait des bindings et pour le  C et pour le C++. si tu utilises les bindings C, les exceptions font planter... j'ai déjà eu ce problème insoluble quand on mix du C++ avec du un bibli graphique C, j'avais moi aussi pensé à l'exception comme sortie élégante, et j'étais tomber sur le même problème. donc j'ai laissé tomber tout ça. pour ton information, si tu es soucieux du C++, n'utilise jamais exit() par ce qu'en fait c'est tuer le programme: aucun destructeur n'est appelé ni rien ni rien. donc, j'ai vraiment laissé tomber tellement je trouvais pas de solution


 
<jamais essayé, connais que de nom>
setjmp / longjmp ?
</jamais essayé, connais que de nom>
 
 

n°446096
El_gringo
Posté le 02-07-2003 à 11:21:31  profilanswer
 

++Taz a écrit :

j'avais moi aussi pensé à l'exception comme sortie élégante


 
Elégante, élégante, c'est vite dit. ça sert pas à ça en principe une exception !
Bon, après, c'est sur  que c'est plus élégant qu'un gros crash.
Mais ça m'étonnerai qu'avec glut, on n'ai pas d'autre moyen de quitter la boucle infernale.

n°446105
Taz
bisounours-codeur
Posté le 02-07-2003 à 11:29:47  profilanswer
 

chrisbk a écrit :


 
<jamais essayé, connais que de nom>
setjmp / longjmp ?
</jamais essayé, connais que de nom>
 
 
 

pas la peine d'y penser, y a plus d'objet qui tiennent avec ça...
 
et oui, quand on arrive pas à structurer son programme de façon à terminer avec le retour d'une fonction ou en cas d'erreur, c'est élégant de lancer une exception et c'est tres sur. Il faut completement abandonner les exit et autre fonction du meme style et toujours lancer une exception. Meme si personne ne l'attrape, elle garantie l'appel de tous les destructeurs. moi quand je fais ça, soit je la catch, soit  dans le cas extrêm, quand je suis sur que rien d'autre ne peut être lancé (puisque traité par des catch plus profond), je change carrément le handler comme ça l'exception est lancée et le programme termine tranquillement.
 
 

Citation :

Elégante, élégante, c'est vite dit. ça sert pas à ça en principe une exception !

tu fais pas du Java? tu veux qu'on en parle de la EOFException?  [:tomtom75]

n°446123
El_gringo
Posté le 02-07-2003 à 11:47:19  profilanswer
 

++Taz a écrit :

tu fais pas du Java? tu veux qu'on en parle de la EOFException?  [:tomtom75]  


 
Hé oui, même Sun ne produit pas toujours du code parfait. Y surement parfois des contraintes qui font qu'on ne peux pas s'en tirer autrement. N'empêche que, niveau élégance, peut mieux faire ! :D

n°446137
Taz
bisounours-codeur
Posté le 02-07-2003 à 11:57:41  profilanswer
 

ben oui mais bon. quand tu veux quitter ton programme / passer à autre chose avec une appli graphique et __sans__ appeler exit (vade retro :fou:), ben je trouve ça pas plus mal qu'un de tes callback lance une exception

n°446146
El_gringo
Posté le 02-07-2003 à 12:10:47  profilanswer
 

++Taz a écrit :

ben oui mais bon. quand tu veux quitter ton programme / passer à autre chose avec une appli graphique et __sans__ appeler exit (vade retro :fou:), ben je trouve ça pas plus mal qu'un de tes callback lance une exception  


 
Mais... si c'est toi qui écrit l'API, tu peux bien faire une sorte d' "exit", correct, qui appellera bien les destructeur et tout ça, avant d'appeler LE "exit" que tu renies. Non ?

n°446154
Taz
bisounours-codeur
Posté le 02-07-2003 à 12:18:09  profilanswer
 

ben si t'as une technique pour faire ça je suis preneur, jusqu'ici cela me semble impossible sans passer par les exceptions.

mood
Publicité
Posté le 02-07-2003 à 12:18:09  profilanswer
 

n°446165
chrisbk
-
Posté le 02-07-2003 à 12:32:16  profilanswer
 

++Taz a écrit :

ben si t'as une technique pour faire ça je suis preneur, jusqu'ici cela me semble impossible sans passer par les exceptions.


 
tu stockes l'adresses de tes objets a detruire dans un gros tableau que tu detruiras dans une fonction que tu auras prealablement fournie a onexit(). Tu peut fair des macros pour automatiser un peu le bins
 
classe [:aloy]

n°446172
hellbilly
free smile
Posté le 02-07-2003 à 12:35:11  profilanswer
 

++Taz a écrit :

j'y connais rien mais j'ai vu qu'il y avait des bindings et pour le  C et pour le C++. si tu utilises les bindings C, les exceptions font planter... j'ai déjà eu ce problème insoluble quand on mix du C++ avec du un bibli graphique C, j'avais moi aussi pensé à l'exception comme sortie élégante, et j'étais tomber sur le même problème. donc j'ai laissé tomber tout ça. pour ton information, si tu es soucieux du C++, n'utilise jamais exit() par ce qu'en fait c'est tuer le programme: aucun destructeur n'est appelé ni rien ni rien. donc, j'ai vraiment laissé tomber tellement je trouvais pas de solution


 :jap:  
 
Sur ce point glut est vraiment naze, suffit de voir le code : c'est exit qui est appelé pour sortir de la boucle. super !
C'est pour ca que je voulais lancer une exception pour eviter ca.
 
Bon apparemment y a pas de solution valable. J'ai pensé à modifier le code glut pour qu'il ne termine pas le programme comme un goret mais c'est pas genial. Ca serait pas possible d'intercepter les appels a exit ?
 
edit: chrisbk, we j'ai vu ca bien que ce soit atexit. Mais j'ai pas envie de m'amuser à maintenir une table des adresses de tous mes objets.


Message édité par hellbilly le 02-07-2003 à 12:42:38
n°446184
Taz
bisounours-codeur
Posté le 02-07-2003 à 12:39:34  profilanswer
 

encore faut il tout faire en mémoire dynamique et j'espere que tu te rends bien compte que si c'etait si facile de référencer tous ses objets... j'avais déjà tenté le coup avec une pseudo-corbeille, ça fonctionner pas trop mal, mais y avait encore trop de truc qui passait par les mailles du filet. et puis c'est lourdingue, je fais déjà tout en smartPointer quand je fais des appli graphiques. et puis meme si cette méthode est valide à une certaine échélle, elle ne fonctionne pas si l'on souhaite simplement arreter un rendu et pas quitter l'application

n°446200
LetoII
Le dormeur doit se réveiller
Posté le 02-07-2003 à 12:52:56  profilanswer
 

++Taz a écrit :

encore faut il tout faire en mémoire dynamique et j'espere que tu te rends bien compte que si c'etait si facile de référencer tous ses objets... j'avais déjà tenté le coup avec une pseudo-corbeille, ça fonctionner pas trop mal, mais y avait encore trop de truc qui passait par les mailles du filet. et puis c'est lourdingue, je fais déjà tout en smartPointer quand je fais des appli graphiques. et puis meme si cette méthode est valide à une certaine échélle, elle ne fonctionne pas si l'on souhaite simplement arreter un rendu et pas quitter l'application


 
Et en surchargeant le new global? ( je sais même plus si on peut y toucher à celui là  [:ddr555] )
 
Edit: dangereux mes marrant à faire :D


Message édité par LetoII le 02-07-2003 à 12:53:20

---------------
Le Tyran
n°446210
Taz
bisounours-codeur
Posté le 02-07-2003 à 12:58:08  profilanswer
 

oui ça peut etre une solution amusante, mais t'as du boulot. mais voit aussi qu'on est pas obligé d'utiliser le new global, donc encore non

n°446218
hellbilly
free smile
Posté le 02-07-2003 à 13:01:56  profilanswer
 

Bon rien a faire avec les exceptions, ca ne marche pas.
J'ai finalement resolu le pb avec atexit qui me detruit l'objet principal de mon prog. C'est bon pour faire le menage mais va pas falloir que je fasse autre chose apres.

n°446225
LetoII
Le dormeur doit se réveiller
Posté le 02-07-2003 à 13:05:09  profilanswer
 

++Taz a écrit :

oui ça peut etre une solution amusante, mais t'as du boulot. mais voit aussi qu'on est pas obligé d'utiliser le new global, donc encore non


 
Après c toi qui fait ton appli, à toi de faire en sorte qu'elle enjambe pas tes mesures de sécuritées [:spamafote]


---------------
Le Tyran
n°446226
Taz
bisounours-codeur
Posté le 02-07-2003 à 13:05:54  profilanswer
 

:sweat:


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

  impossible de catcher une exception

 

Sujets relatifs
Impossible d'afficher un bitmap transparent dans un DC memoire...Connection php-->ftp impossible de lire de contenu du serveur distant
exception_flt_stack_checkimpossible de centrer [résolu]
Impossible d'effacer un cookieThrows IO Exception
[PHP] Création de Sous-dossier impossibleErreur, impossible de mettre une $var dans un tableau...
[C++] new - exceptionimpossible de trouver l'erreure....[PHP]
Plus de sujets relatifs à : impossible de catcher une exception


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