Cedric Gavage �crivait ( Friday 25/07/2003 11:45 ) dans le message ci-dessous: ---

Jean-Michel Reghem wrote:

Tu comprendras ton erreur via http://www-sop.inria.fr/semir/personnel/Francis.Avnaim/Cours/Inria/C++/DeposeChap/Cpp12.html


euh???
Tu peux d�tailler l�?
Le but ici, est de tester gcc, parce qu'il semble que les exceptions ne sont pas catch�es dans mon programme --> d'o� un mini-mini-programme de test ...
le catch(...) est destin� � �viter la segmentation fault lors d'erreur unexcepcted ...
Je peux pas m'amuser � mettre des catch pour chaque type d'erreur, sachant que ma librairie utilise d'autres librairies dont je ne maitrise pas le code ...
Je vois pas bien o� se trouve l'�ventuelle erreur ... c'est du b�te c++, et compil� sous windows, ca catch sans probl�me ...

catch(...) n'intercepte pas toute erreur (ou plut�t tout type d'erreur existante) ;)


Pour info:
"C++ exceptions can only be raised synchronously; for all intents and
purposes this means at a (implicit or explicit) function call.
Processor exceptional conditions (like divide by zero, use of
signalling NaNs, et al) are unrelated.  If you want a divide-by-zero
exception you have to define it, then check for it (in an OS-specific
manner) in every place that does arithmetic, and decide what you want
to do."
Cela a peut-�tre chang� mais je doute ;)


oui ... OK ...
C'est pour �a que j'ai essay�:
char *pointertest=NULL;
strcpy(pointertest,"coucou");

--> ca entre aussi dans les processor exceptions?
Pour moi, c'est plutot une memory exceptions ...



Sinon tu dis compil� sous windows �a catch sans probl�me ? exactement le m�me code?

oui ...


avec gcc ? ou tu compares avec Visual C++?


ben, le gcc sous windows ne catche pas non plus ...
Par contre, avec visual c++, aucun probl�me ...
--> des erreurs memoires, etc ... dans des librairies sont catch�es (sauf en cas de gros destroyage de la stack), ce qui permet de ne pas planter le programme de base ... et d'�ventuellement r�initialiser la librairie ...




Une technique que j'ai d�j� lue sous unix, c'est d'intercepter le signal SIGFPE (floating point exception) et d'utiliser la technique throw/catch � l'int�rieur du handler... mais bon je n'ai jamais test� ;)

Pour Visual C++, il y a des extensions Microsoft qui peuvent agir...
Peut-�tre un peu de doc l�: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore98/HTML/_crt_signal.asp


OK ... mais je confirme que un catch(...) sous visual catche pratiquement tout ...
que ce soit la division par z�ro ou l'�criture sur une zone memoire non initialis�e ...





oui mais " " c'est en g�n�ral pour un include local (. , path, ...) ;)


ouais ... OK :-))
mais bon :-) ... ca marche pas mieux :-)


j'ai test� avec g++, c++, gcc ... mais c'est choux rouge et verre � pils ... de toute fa�on, c'est quand m�me gcc derri�re (avec �ventuellement quelques flags en plus genre -lstdc++)

Certes mais ce n'est pas pour faire joli ;)

on est d'accord :-)



a+


Jean-Michel
---

Jean-Michel Reghem
Voice Technology Development Engineer
E-Mail : mailto:[EMAIL PROTECTED]

Babel Technologies S.A.
Boulevard Dolez 33 B-7000 Mons (Belgium)
Tel: +32-(0)65 37.43.06
http://www.babeltech.com



-- Avec i-mode, vivez une toute nouvelle experience de la communication et des services en ligne. Plus d�info sur http://www.imode.be CyberCafe 2.0 <http://www.cybercafe.tv> Chaque Mardi 19h15 sur La 2! Desabonnement par email : <mailto:[EMAIL PROTECTED]>

Répondre à