Gestion erreur
Résolu
Utilisateur anonyme
-
ElementW Messages postés 4814 Date d'inscription Statut Contributeur Dernière intervention -
ElementW Messages postés 4814 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
je cherche a gérer intelligemment le retour de mes fonctions pour surveiller que tout fonctionne bien.
mais j'ai un problème technique ...
mes fonctions functionOne(), functionTwo(), functionTree() appartienne a la même class,
j'ai une variable error en private qui vaut 0.
si une erreur ce montre dans l'une des trois fonctions this->error = 1.
fichier.hpp
fichier.cpp
comment je peut faire pour que , si une erreur arrive dans fonctionOne()
le programme quitte mon if() avant d'entré dans functionTwo() ??
je veut pas utilisé de return() dans mes fonctions, ainsi que évité les if ()
a chaque appel de fonction ...
peut on obtenir quelque chose d’intéressant avec try et catch ?
genre si this->error == 1 alors return(1);
je cherche a gérer intelligemment le retour de mes fonctions pour surveiller que tout fonctionne bien.
mais j'ai un problème technique ...
mes fonctions functionOne(), functionTwo(), functionTree() appartienne a la même class,
j'ai une variable error en private qui vaut 0.
si une erreur ce montre dans l'une des trois fonctions this->error = 1.
fichier.hpp
class truc { private: int error; public: truc(); ~truc(); void functionOne(); void functionTwo(); void functionTree(); };
fichier.cpp
if (this->error == 0) { functionOne(); functionTwo(); functionTree(); } else return (1); return (0);
comment je peut faire pour que , si une erreur arrive dans fonctionOne()
le programme quitte mon if() avant d'entré dans functionTwo() ??
je veut pas utilisé de return() dans mes fonctions, ainsi que évité les if ()
a chaque appel de fonction ...
peut on obtenir quelque chose d’intéressant avec try et catch ?
genre si this->error == 1 alors return(1);
A voir également:
- Gestion erreur
- Logiciel gestion locative gratuit excel - Télécharger - Comptabilité & Facturation
- Logiciel gestion photo gratuit - Guide
- Logiciel gestion cabinet médical gratuit - Télécharger - Organisation
- Logiciel gestion cave à vin gratuit excel - Télécharger - Cuisine & Gastronomie
- Logiciel gestion garage - Télécharger - Organisation
1 réponse
'lut
L'avantage c'est qu'il n'y a pas de
from human import idiocy
del idiocy
peut on obtenir quelque chose d’intéressant avec try et catch ?Justement, try et catch sont là pour ça.
#include <stdexcept> // Par exemple void truc::functionOne() { [...] if (blabla) { throw std::runtime_error("Nom de Zeus c'est la fin du monde!"); } } [...] try { functionOne(); functionTwo(); functionTree(); } catch (const std::runtime_error &e) { return 1; } return 0;
L'avantage c'est qu'il n'y a pas de
ifà écrire, et que si aucune exception n'est levée, c'est aussi rapide que s'il n'y avait pas de
ifde vérif'. Par contre quand il y en a une, c'est 10x~20x plus lent que des
ifen chaîne, donc c'est à utiliser pour des cas "exceptionnels" (erreurs), pas l'exécution normale de ton progamme.
from human import idiocy
del idiocy
je comprend la partie try , qui englobe les fonctions susceptible de générer des erreurs.
je crois comprendre que catch agis comme un else qui suivrais un if non valide ?
mais je comprend pas le reste ...
le (const std::runtime_error &e) et la partie intra-fonction .
dans ton exemple tu définie un message d'erreur qui s'affiche si il il y en a une, mais si je veut a la place ne rien afficher, je peut ?
Dans une fonction, on signale/lève/envoie/créé une erreur/exception via le mot-clé .
Mon exemple n'affiche aucun message d'erreur. Ceci dit j'utilise la classe pour indiquer la nature de mon erreur, et créer une instance de cette classe demande de spécifier une chaîne de caractères descriptive, qu'on peut récupérer après. Exemple; si je voulais afficher l'erreur en plus de la logique actuelle: