begin process at 2012 05 29 03:26:54
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Divers

 > 

Divers

 > 

gestion des exceptions en C++


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

gestion des exceptions en C++

jeudi 27 septembre 2007 à 10:14:49 | gestion des exceptions en C++

LaTatadu91

Bonjour,

Je me posais une question sur les exceptions en C++ : les fameux try catch!
est ce que une exception remonte de sous programme en sous programme ?
je m'explique :  j'ai une gestion d'exception dans une fonction toto

void toto()
{
try
    tata()
catch
}
puis tata () appel titi() et c'est titi qui plante!
est ce que ca remontera jusqu'a toto ?
ensuite ma deuxieme question sera : comment gérer les exceptions? si une erreur est détectée on ferme le programme?

voila merci de me faire partager votre savoir ;-)


 

jeudi 27 septembre 2007 à 11:01:01 | Re : gestion des exceptions en C++

DeAtHCrAsH

T'es sure que c'est pas tata qui plante (celle du 91) ?
Allez stop les blagues bidons ^_^

Pour ta question, le mieux est de te faire une classe qui gère tes exceptions. A l'aide d'un throw, tu peux faire remonter l'exception jusqu'au premier appellant, c'est à dire le niveau le plus haut.
Sinon pour ma part je ne suis pas partisan de ce genre de bidouille.... C'est anti-performance, et ca laisse la possibilité au programmeur de pondre du code bugué.

Plutot que de perdre du temps sur comment contourner les erreurs et plantage de ton programme, concentre toi plutot a faire un code propre et blindé.

Shell
jeudi 27 septembre 2007 à 11:08:49 | Re : gestion des exceptions en C++

LaTatadu91

LOL bon deja pas mal la blague !!!

alors oui je suis d'accord avec toi, le seul probleme est que:
 - je suis pas tout seul a coder et que les autres sont pas vraiment dans ce domaine a l'origine
- notre prog doit tourner tout le temps, donc la solution pour ma part est de killer et relancer si erreur detectée
car ton prog tu sais qu'il tourne pendant 2/3jours mais tu sais pas ce qu'il peut se passer dans 2/3semaines
surtout en usine!

autre question tu fais remonter l'exception ok, mais comment tu sais quelle erreur a été générée?pour pouvoir traiter les cas...

 

jeudi 27 septembre 2007 à 11:22:07 | Re : gestion des exceptions en C++

BruNews

Administrateur CodeS-SourceS
La gestion d'erreur est très couteuse.
Plutot que de lancer du throw(), il convient de retourner un code d'erreur qui lui ne coute absolument rien.

ciao...
BruNews, MVP VC++
jeudi 27 septembre 2007 à 11:26:09 | Re : gestion des exceptions en C++

LaTatadu91

oui brunews c'est ainsi que mon code est fait avec des retour de statutdes differentes fonctions!
mais si ca plante dans la fonction,(bug, depassement memoire, ou autre..;)
comment faire?
Avec les exceptions je pensais pouvoir soit bypasser la fonction soit killer le programme
vu qu'a coté j'ai un autre prog. qui relance le prog si celui ci disparait des processus dans le manager des taches!



 

jeudi 27 septembre 2007 à 11:38:31 | Re : gestion des exceptions en C++

BruNews

Administrateur CodeS-SourceS
bug, depassement memoire, mais tout ça doit disparaitre avant d'entrer en prod, on ne livre pas un truc buggé.

ciao...
BruNews, MVP VC++
jeudi 27 septembre 2007 à 11:48:53 | Re : gestion des exceptions en C++

DeAtHCrAsH

Pour éviter les plantages il n'y a pas une solution unique, c'est pourquoi tu dois faire un maximum de controle sur les données et leur intégrité.
Par exemple ne pas faire une affectation sur une variable de char[64] si les données font une taille de 65, et ainsi de suite.
De la sorte tu vas eviter tout plantage.

Shell
jeudi 27 septembre 2007 à 11:49:43 | Re : gestion des exceptions en C++

LaTatadu91

ben je vais pas dire le contraire
juste que ya toujours de l'imprevu
c'est du " au cas ou"
je suis pas en train de te dire que je m'en fous et que je fais que de la merde
au contraire, j'essaye de stabiliser par tous les moyens possibles:
test a gogo + surveillance + sécurité diverses...

apres comme je disais on pense pas tjrs a tout surtout avec mon peu d'experience.


 

vendredi 28 septembre 2007 à 17:31:13 | Re : gestion des exceptions en C++

luhtor

Les exceptions... que des défauts à vous entendre. Franchement, c'est l'idéal pour propager une erreur. Pourquoi utiliser des codes d'erreurs illisible et incompréhensible...

Les exceptions couteuses en cpu ? mais franchement, on s'en fou. C'est lisible et pratique, et pas fait pour les chiens.

DeAtHCrAsH => "Plutot que de perdre du temps sur comment contourner les erreurs et plantage de ton programme, concentre toi plutot a faire un code propre et blindé."

Tu as l'air de penser qu'une exception est faite pour gérer les erreurs et plantages du programme. Une exception n'est pas faite pour détecter des bugs et des dépassements de mémoire. Elle est faite pour propager une erreur prévue par le programmeur. Genre tu as une fonction pour charger une image, la méthode basique est de retourner un code d'erreur, l'autre est d 'utiliser une exception contenant le code d'erreur, le fichier concerné et un message d'erreur. Ca permet ensuite d'afficher un message compréhensible à l'utilisateur du programme.

Evidemment on peut toujours utiliser des codes d'erreurs:
if (ret == )
if (ret == )

Les deux méthodes permettent de faire les memes choses, mais l'une est pratique, l'autre pas.

LaTatadu91 => "autre question tu fais remonter l'exception ok, mais comment tu sais quelle erreur a été générée?pour pouvoir traiter les cas..."

A chaque erreur, tu as un type d'exception particulier:
class Exception_Images : public Exception
{...};

class Exception_Images_Chargement  : public Exception_Images
{...};

class Exception_Images_Format_Fichier vide : class Exception_Images_Chargement
{...};

class Exception_Images_Format_Inconnu: class Exception_Images_Chargement
{...};

Ce genre de décomposition te permet ensuite de traiter les exceptions par cas et par catégorie. Mais c'est pas nécessaire, tu peux juste avoir la classe Exception_Images qui prend en paramètre un message d'erreur, mais lors du catch, tu pourras pas traiter précisément les cas.

Donc les exceptions oui pour gérer les situations prévues (bien plus puissant qu'un code d'erreur), et non pour gérer les erreurs du programmeurs. Evidemment, si ta grosses préoccupation, c'est la performance, mieux vaut éviter.

PS: C'est mon point de vue évidemment.


Cette discussion est classée dans : programme, question, gestion, toto, exceptions


Répondre à ce message

Sujets en rapport avec ce message

Problème de gestion des exceptions [ par lolo38550 ] Bonjour à tous, Je développe un programme où la gestion des erreurs est faite par exception. Toutes mes fonctions possèdent donc un bloc try et un bl programme nombres premiers [ par I0o0I ] Bonjour, j ai une question pour un programme plutot math mais la question est pas math du tout... c est surement très facile a résoudre. En gros j a Question pour un projet! [ par ruleteams ] Bonjour, je m'y connais vraiment pas en programmation, mais pour une idée de projet j'aurais besoin de savoir si ce dont j'ai besoin est réalisable. E gestion de 2 souris en simultané [ par flamt ] bonjour, je fabrique un robot. Les moteurs pilotés par un e-pc (laissé sur le robot of kourse), j'aimerais asservir les déplacements de mon robot en détection WM_DEVICECHANGE [ par didoux95 ] Bonjour à tous, Je me suis mis au C il n'y a pas très longtemps. En navigant sur internet (et sur ce site notemment) j'ai pu apprendre énormément de La fonction ioperm() [ par baptchr55 ] Bonjour à tous, j'ai une simple petite question... Dans le cadre d'un projet j'ai récupéré une petit programme pour l'ouverture du port // que j'ai p Question triviale: Qui suis-je ? [ par ArthurAuguste ] Bonjour, Trivial certainement pour un non débutant ! J'écris un petit programme en C++ qui utilise l'API 32 sous Windows XP, il commence donc par: int Exécution de programme simultané [ par dadan36 ] Bonjour messieurs et peut-être mesdames qui sais ^^. Voilà pour vous exposer mon problème j'aimerais réaliser une carte électronique pour la gestion Gestion d'une bibliothèque par interface graphique en C++ [ par karimfsdmfes ] Bonjour tout le monde, Je suis une étudient et j'ai petit programme à réaliser. En fait je débute totalement en C++. Bref mon programme consiste à f


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,515 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales