Accueil > Forum > > > > Gestion des execptions et GCC
Gestion des execptions et GCC
mardi 11 juillet 2006 à 14:04:58 |
Gestion des execptions et GCC

skirby
|
Bonjour, J'aurais voulu savoir si il était possible de gérer les execptions grace à l'instruction Try / Catch avec le compilateur GCC ? Plus précisément, j'aimerai éviter les plantages sur les instructions du genre 1/0 D'après ce que j'ai compris, Try Catch fonctionne très bien par exemple sur des problèmes d'allocation mémoire, mais ne "fonctionne" plus dans le cas d'erreurs sévères comme la division par 0. Donc, pour ceux qui connaissent Visual Basic, pour t'on avoir l'équivalent du On Error Goto ... Merci d'avance.
|
|
mardi 11 juillet 2006 à 16:07:22 |
Re : Gestion des execptions et GCC

luhtor
|
Il me parait nécessaire que tu apprennent deja ce qu'est une exception
et comment ca fonctione. Une exception, ca fonctionne toujours, si elle
existe.
|
|
mardi 11 juillet 2006 à 16:40:32 |
Re : Gestion des execptions et GCC

BruNews
|
SI CODE POUR WINDOWS: l'API ne lève jamais d'exception, inutile donc d'incoporer l'énorme masse de code qu'implique la gestion d'exception, tu éviteras de ruiner les performances. N'est utile que si tu pilotes des modules COM car eux en lèvent (à destination de vb et autres interprétés). Division par 0 et autres plaisanteries de ce genre se gèrent dans le code, on vérifie avant l'opération. Un simple 'if' est nettement moins couteux que l'empilage de tous les registres et leur dépilage ultérieur.
ciao... BruNews, MVP VC++
|
|
mardi 11 juillet 2006 à 16:48:52 |
Re : Gestion des execptions et GCC

skirby
|
Merci luhtor d'avoir répondu.
Si je me base sur cette définition : exception : [programmation] Erreur dans le déroulement d'un programme, prévue lors de la conception, et gérée de main de maître (enfin, faut espérer). En fait, le programmeur est censé lui-même « lever une exception » pour détourner le déroulement normal de son programme.
Je dois en déduire qu'en fait il faut implicitement envoyer Throw pour générer une execption et donc gérér l'erreur qui aurait pu faire planter le programme. Exemple: int i = 0; if (i == 0) throw("Division par Zéro");
Il n'existe donc pas d'équivalent à la commande On Error Goto label du VB.
C'est bien cela ?
Dans ce cas, quelqu'un peut-il m'expliquer pourquoi dans cette exemple l'execption est gérée toute seule sans avoir à appeler Throw ?
#include <windows.h> #include <iostream>
int main(int argc, char *argv[]) { int *tab1;
try { tab1 = new int[700000000]; } catch (...) // Now we treat gracefully the argument errors! { MessageBox(0, "Error", "", 0);; return(-1); }
delete [] tab1;
return(0); }
Merci d'avance.
|
|
mardi 11 juillet 2006 à 17:06:49 |
Re : Gestion des execptions et GCC

skirby
|
Ok, je crois avoir compris. J'ai jeter un oeil dans le livre de Richter
Dans la section C++ Exceptions Versus Structured Exceptions, j'ai trouvé ceci :
Catching Structured Exceptions with C++ Normally, C++ exception handling does not allow an application to recover from a hard exception such as an access violation or a division by 0. However, Microsoft has added this support to their compiler. For example, the following code will prevent the process from terminating abnormally:
GCC ne doit pas savoir gérer les execptions comme le compilateur de Microsoft.
Merci BruNews.
|
|
mardi 11 juillet 2006 à 18:37:37 |
Re : Gestion des execptions et GCC

luhtor
|
GCC sait tout a fait gérer les exceptions. Mais tu dois savoir que les
gas qui ont fait les lib du C++ ont inclu des exceptions, que tu
actives ou pas dans les paramètrages de la compilation. C'est pour ca
que ce code lève une exception sans que toi meme tu en es mis:
try {
tab1 = new int[700000000];
}
catch (...) // Now we treat gracefully the argument errors!
{
MessageBox(0, "Error", "", 0);;
return(-1);
}
Enfin je peux dire des bétises :) mais voici l'idée générale.
|
|
mardi 11 juillet 2006 à 19:13:56 |
Re : Gestion des execptions et GCC

BruNews
|
ben alors désactives les et tu pourras faire: tab1 = new int[700000000]; if(!tab) JeSorsOuAutre(); au moins 200 cycles de gagnés.
J'adore le "gracefully"... on se moque du monde.
ciao... BruNews, MVP VC++
|
|
mardi 11 juillet 2006 à 19:49:14 |
Re : Gestion des execptions et GCC

luhtor
|
Oue mais il s'agit un tutoriel la :) l'exemple est forcément débile.
|
|
mercredi 12 juillet 2006 à 11:17:03 |
Re : Gestion des execptions et GCC

skirby
|
L'exemple est d'autant plus stupide que j'ai adapté vite fait "bien fait" un exemple trouvé sur le Net (d'ou le "gracefully" tant aprécié par BruNews)
En tout cas merci pour vos réponses.
|
|
Cette discussion est classée dans : gcc, gestion, try, catch, execptions
Répondre à ce message
Sujets en rapport avec ce message
try catch [ par raphael59540 ]
<img src="/imgs2/smile_question.gif"
afficher le contenu d'une 'exception en c++ [ par wislam2007 ]
Salut j'ai un try catch que je doit gérer : [code=cpp]try{ }catch(exception e){ // je veux afficher le contenu de l'exception : je fait e.what() mais
Try/Catch [ par Jojo73450 ]
Salut à tous ! Un problème tout bête mais j'ai passé la journée dessus (argg!!!!) alors je me décide à poster, ne trouvant aucune réponse... Applica
Gestion d'exceptions [ par Ravaner ]
Bjr à tous,Dans un de mes pgm j'ai une exception EJPEG Erreur JPEG #52, dont je connais la cause, là n'est pas le pb. J'ai essayé de la piéger avec Tr
Trois erreurs: TypeNameExpected ; Catch statement missing ) ; Compound statement missing }. [ par ProgVal ]
void __fastcall TForm1::Button1Click(TObject *Sender){ try { String nf; nf="C:\Documents and Settings\raymond\Menu Démarrer\Progra
Gestion d'une école [ par Romerocharvet ]
du code source en Langage c " Gestion d'une école"-Les fichiers-Les Listes-Les poiteurs... merci
Gestion des doublons [ par kj_83 ]
Boujour , je travaille sur un programme (en C++ avec Builder) de gestion de stock avec une base de donnée (Access) ,dans ce programme l'utilisateur pe
Gestion de la mémoire [ par DMK04 ]
Salut,Je me demandais un truc sur la gestion de la mémoire. Je ne vois pas trop comment l'expliquer simplement et rapidement, voici donc un peu de cod
Gestion des doublons [ par kj_83 ]
Bonjour J'aimerais savoir comment gérer les doublons dans une base de donnée Access qui contient entre autre une table produit avec 2 champs : NomPr
Complier un programme pour DOS [ par themioux ]
SalutJe cherche à compiler un programme pour qu'il fonctionne sous DOS à partir d'un PC sous LinuxA savoir, je travaille sur une architechture i686 et
Livres en rapport
|
Derniers Blogs
JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|