Voila, je cherche a creer un programme capable de capturer toutes les
erreurs possibles d'execution (division par 0, mauvais pointeur, ...) et
d'afficher un message detaillant precisement l'erreur.
pour cela j'ai pense a quelque chose comme ca :
try{
instructions;
}
catch(...)
{
printf("Erreur\n");
}
J'arrive belle et bien a capturer toutes les erreurs grace au catch(...)
mais l'ennuie est que je n'ai aucun moyen de savoir ce qui s'est passe et
d'afficher un message plus detaille que "Erreur". J'aimerai avoir une
description de l'erreur mais comment cela est possible?
Merci.
Voila, je cherche a creer un programme capable de capturer toutes les erreurs possibles d'execution (division par 0, mauvais pointeur, ...) et d'afficher un message detaillant precisement l'erreur.
Je ne crois pas qu'il soit possible de détecter ce type d'erreur en C++ standard.
Par contre, tu peux implémenter une méthode spécifique à ton OS. Par exemple, sous GNU/Linux (ou tout autre OS POSIX), tu peux "attraper" les signaux correspondants (notamment SIGSEGV pour "mauvais pointeur"). Sous Windows, il doit exister une méthode analogue.
Tu peux déjà attraper toutes les erreurs "standards" (générées par la bibliothèque standard) en utilisant un "catch (std::exception& e)", la description est dans "e.what()".
Vincent
-- SL> Au fait elle est mieux ma signature maintenant ? Oui. T'enlève encore les conneries que t'as écrit dedans et c'est bon. -+- JB in <http://www.le-gnu.net> : Le neuneuttoyage par le vide -+-
Voila, je cherche a creer un programme capable de capturer toutes les
erreurs possibles d'execution (division par 0, mauvais pointeur, ...) et
d'afficher un message detaillant precisement l'erreur.
Je ne crois pas qu'il soit possible de détecter ce type d'erreur en C++
standard.
Par contre, tu peux implémenter une méthode spécifique à ton OS. Par
exemple, sous GNU/Linux (ou tout autre OS POSIX), tu peux "attraper" les
signaux correspondants (notamment SIGSEGV pour "mauvais pointeur").
Sous Windows, il doit exister une méthode analogue.
Tu peux déjà attraper toutes les erreurs "standards" (générées par la
bibliothèque standard) en utilisant un "catch (std::exception& e)", la
description est dans "e.what()".
Vincent
--
SL> Au fait elle est mieux ma signature maintenant ?
Oui. T'enlève encore les conneries que t'as écrit dedans et c'est bon.
-+- JB in <http://www.le-gnu.net> : Le neuneuttoyage par le vide -+-
Voila, je cherche a creer un programme capable de capturer toutes les erreurs possibles d'execution (division par 0, mauvais pointeur, ...) et d'afficher un message detaillant precisement l'erreur.
Je ne crois pas qu'il soit possible de détecter ce type d'erreur en C++ standard.
Par contre, tu peux implémenter une méthode spécifique à ton OS. Par exemple, sous GNU/Linux (ou tout autre OS POSIX), tu peux "attraper" les signaux correspondants (notamment SIGSEGV pour "mauvais pointeur"). Sous Windows, il doit exister une méthode analogue.
Tu peux déjà attraper toutes les erreurs "standards" (générées par la bibliothèque standard) en utilisant un "catch (std::exception& e)", la description est dans "e.what()".
Vincent
-- SL> Au fait elle est mieux ma signature maintenant ? Oui. T'enlève encore les conneries que t'as écrit dedans et c'est bon. -+- JB in <http://www.le-gnu.net> : Le neuneuttoyage par le vide -+-
Ben
Oui mais je ne pense pas qu'avec cette solution je sois capable de detecter les erreurs innatendues du type division par 0 ou autres.
"Frédéri MIAILLE" wrote in message news:biiacj$pb1$
"Ben" a écrit dans le message de news:3f4c7e4a$0$16530$
Voila, je cherche a creer un programme capable de capturer toutes les erreurs possibles d'execution (division par 0, mauvais pointeur, ...) et d'afficher un message detaillant precisement l'erreur.
pour cela j'ai pense a quelque chose comme ca : try{ instructions; } catch(...) { printf("Erreurn"); } try{
// ... instructions; if(Cafoire) { MaStuctureDerreur Diantre; Diantre.Str="Une merde s'est produite et là, on constate que CaFoire
Oui mais je ne pense pas qu'avec cette solution je sois capable de detecter
les erreurs innatendues du type division par 0 ou autres.
"Frédéri MIAILLE" <bobranger_no_spam@wanadoo.fr> wrote in message
news:biiacj$pb1$1@biggoron.nerim.net...
"Ben" <serbenet@free.fr> a écrit dans le message de
news:3f4c7e4a$0$16530$626a54ce@news.free.fr...
Voila, je cherche a creer un programme capable de capturer toutes les
erreurs possibles d'execution (division par 0, mauvais pointeur, ...) et
d'afficher un message detaillant precisement l'erreur.
pour cela j'ai pense a quelque chose comme ca :
try{
instructions;
}
catch(...)
{
printf("Erreurn");
}
try{
// ... instructions;
if(Cafoire)
{
MaStuctureDerreur Diantre;
Diantre.Str="Une merde s'est produite et là, on constate que
CaFoire
Oui mais je ne pense pas qu'avec cette solution je sois capable de detecter les erreurs innatendues du type division par 0 ou autres.
"Frédéri MIAILLE" wrote in message news:biiacj$pb1$
"Ben" a écrit dans le message de news:3f4c7e4a$0$16530$
Voila, je cherche a creer un programme capable de capturer toutes les erreurs possibles d'execution (division par 0, mauvais pointeur, ...) et d'afficher un message detaillant precisement l'erreur.
pour cela j'ai pense a quelque chose comme ca : try{ instructions; } catch(...) { printf("Erreurn"); } try{
// ... instructions; if(Cafoire) { MaStuctureDerreur Diantre; Diantre.Str="Une merde s'est produite et là, on constate que CaFoire
J'utilise vc++ et "catch (std::exception& e)" ne semble pas possible (je ne peux pas compiler).
"Vincent Richard" wrote in message news:3f4caa86$0$260$
Voila, je cherche a creer un programme capable de capturer toutes les erreurs possibles d'execution (division par 0, mauvais pointeur, ...) et d'afficher un message detaillant precisement l'erreur.
Je ne crois pas qu'il soit possible de détecter ce type d'erreur en C++ standard.
Par contre, tu peux implémenter une méthode spécifique à ton OS. Par exemple, sous GNU/Linux (ou tout autre OS POSIX), tu peux "attraper" les signaux correspondants (notamment SIGSEGV pour "mauvais pointeur"). Sous Windows, il doit exister une méthode analogue.
Tu peux déjà attraper toutes les erreurs "standards" (générées par la bibliothèque standard) en utilisant un "catch (std::exception& e)", la description est dans "e.what()".
Vincent
-- SL> Au fait elle est mieux ma signature maintenant ? Oui. T'enlève encore les conneries que t'as écrit dedans et c'est bon. -+- JB in <http://www.le-gnu.net> : Le neuneuttoyage par le vide -+-
J'utilise vc++ et "catch (std::exception& e)" ne semble pas possible (je ne
peux pas compiler).
"Vincent Richard" <chere-loque.MARRE-DE-LA-PUB@wanadoo.fr.invalid> wrote in
message news:3f4caa86$0$260$626a54ce@news.free.fr...
Voila, je cherche a creer un programme capable de capturer toutes les
erreurs possibles d'execution (division par 0, mauvais pointeur, ...) et
d'afficher un message detaillant precisement l'erreur.
Je ne crois pas qu'il soit possible de détecter ce type d'erreur en C++
standard.
Par contre, tu peux implémenter une méthode spécifique à ton OS. Par
exemple, sous GNU/Linux (ou tout autre OS POSIX), tu peux "attraper" les
signaux correspondants (notamment SIGSEGV pour "mauvais pointeur").
Sous Windows, il doit exister une méthode analogue.
Tu peux déjà attraper toutes les erreurs "standards" (générées par la
bibliothèque standard) en utilisant un "catch (std::exception& e)", la
description est dans "e.what()".
Vincent
--
SL> Au fait elle est mieux ma signature maintenant ?
Oui. T'enlève encore les conneries que t'as écrit dedans et c'est bon.
-+- JB in <http://www.le-gnu.net> : Le neuneuttoyage par le vide -+-
J'utilise vc++ et "catch (std::exception& e)" ne semble pas possible (je ne peux pas compiler).
"Vincent Richard" wrote in message news:3f4caa86$0$260$
Voila, je cherche a creer un programme capable de capturer toutes les erreurs possibles d'execution (division par 0, mauvais pointeur, ...) et d'afficher un message detaillant precisement l'erreur.
Je ne crois pas qu'il soit possible de détecter ce type d'erreur en C++ standard.
Par contre, tu peux implémenter une méthode spécifique à ton OS. Par exemple, sous GNU/Linux (ou tout autre OS POSIX), tu peux "attraper" les signaux correspondants (notamment SIGSEGV pour "mauvais pointeur"). Sous Windows, il doit exister une méthode analogue.
Tu peux déjà attraper toutes les erreurs "standards" (générées par la bibliothèque standard) en utilisant un "catch (std::exception& e)", la description est dans "e.what()".
Vincent
-- SL> Au fait elle est mieux ma signature maintenant ? Oui. T'enlève encore les conneries que t'as écrit dedans et c'est bon. -+- JB in <http://www.le-gnu.net> : Le neuneuttoyage par le vide -+-
Vincent Richard
J'utilise vc++ et "catch (std::exception& e)" ne semble pas possible (je ne peux pas compiler).
#include <stdexcept>
Vincent
-- SL> Au fait elle est mieux ma signature maintenant ? Oui. T'enlève encore les conneries que t'as écrit dedans et c'est bon. -+- JB in <http://www.le-gnu.net> : Le neuneuttoyage par le vide -+-
J'utilise vc++ et "catch (std::exception& e)" ne semble pas possible (je
ne peux pas compiler).
#include <stdexcept>
Vincent
--
SL> Au fait elle est mieux ma signature maintenant ?
Oui. T'enlève encore les conneries que t'as écrit dedans et c'est bon.
-+- JB in <http://www.le-gnu.net> : Le neuneuttoyage par le vide -+-
J'utilise vc++ et "catch (std::exception& e)" ne semble pas possible (je ne peux pas compiler).
#include <stdexcept>
Vincent
-- SL> Au fait elle est mieux ma signature maintenant ? Oui. T'enlève encore les conneries que t'as écrit dedans et c'est bon. -+- JB in <http://www.le-gnu.net> : Le neuneuttoyage par le vide -+-
Ben
OK thank you I found the way as well by including <exception>, it seems to work.
"Vincent Richard" wrote in message news:3f4cba77$0$239$
J'utilise vc++ et "catch (std::exception& e)" ne semble pas possible (je ne peux pas compiler).
#include <stdexcept>
Vincent
-- SL> Au fait elle est mieux ma signature maintenant ? Oui. T'enlève encore les conneries que t'as écrit dedans et c'est bon. -+- JB in <http://www.le-gnu.net> : Le neuneuttoyage par le vide -+-
OK thank you
I found the way as well by including <exception>, it seems to work.
"Vincent Richard" <chere-loque.MARRE-DE-LA-PUB@wanadoo.fr.invalid> wrote in
message news:3f4cba77$0$239$626a54ce@news.free.fr...
J'utilise vc++ et "catch (std::exception& e)" ne semble pas possible (je
ne peux pas compiler).
#include <stdexcept>
Vincent
--
SL> Au fait elle est mieux ma signature maintenant ?
Oui. T'enlève encore les conneries que t'as écrit dedans et c'est bon.
-+- JB in <http://www.le-gnu.net> : Le neuneuttoyage par le vide -+-
OK thank you I found the way as well by including <exception>, it seems to work.
"Vincent Richard" wrote in message news:3f4cba77$0$239$
J'utilise vc++ et "catch (std::exception& e)" ne semble pas possible (je ne peux pas compiler).
#include <stdexcept>
Vincent
-- SL> Au fait elle est mieux ma signature maintenant ? Oui. T'enlève encore les conneries que t'as écrit dedans et c'est bon. -+- JB in <http://www.le-gnu.net> : Le neuneuttoyage par le vide -+-
Ben
Bon ca marche mais en fait je viens de voir que division par zero n'est pas std::exception donc retour au meme point.
"Ben" wrote in message news:3f4cbb59$0$16544$
OK thank you I found the way as well by including <exception>, it seems to work.
"Vincent Richard" wrote in
message news:3f4cba77$0$239$
J'utilise vc++ et "catch (std::exception& e)" ne semble pas possible (je
ne peux pas compiler).
#include <stdexcept>
Vincent
-- SL> Au fait elle est mieux ma signature maintenant ? Oui. T'enlève encore les conneries que t'as écrit dedans et c'est bon. -+- JB in <http://www.le-gnu.net> : Le neuneuttoyage par le vide -+-
Bon ca marche mais en fait je viens de voir que division par zero n'est pas
std::exception donc retour au meme point.
"Ben" <serbenet@free.fr> wrote in message
news:3f4cbb59$0$16544$626a54ce@news.free.fr...
OK thank you
I found the way as well by including <exception>, it seems to work.
"Vincent Richard" <chere-loque.MARRE-DE-LA-PUB@wanadoo.fr.invalid> wrote
in
J'utilise vc++ et "catch (std::exception& e)" ne semble pas possible
(je
ne peux pas compiler).
#include <stdexcept>
Vincent
--
SL> Au fait elle est mieux ma signature maintenant ?
Oui. T'enlève encore les conneries que t'as écrit dedans et c'est bon.
-+- JB in <http://www.le-gnu.net> : Le neuneuttoyage par le vide -+-
Bon ca marche mais en fait je viens de voir que division par zero n'est pas std::exception donc retour au meme point.
"Ben" wrote in message news:3f4cbb59$0$16544$
OK thank you I found the way as well by including <exception>, it seems to work.
"Vincent Richard" wrote in
message news:3f4cba77$0$239$
J'utilise vc++ et "catch (std::exception& e)" ne semble pas possible (je
ne peux pas compiler).
#include <stdexcept>
Vincent
-- SL> Au fait elle est mieux ma signature maintenant ? Oui. T'enlève encore les conneries que t'as écrit dedans et c'est bon. -+- JB in <http://www.le-gnu.net> : Le neuneuttoyage par le vide -+-
Vincent Richard
Bon ca marche mais en fait je viens de voir que division par zero n'est pas std::exception donc retour au meme point.
Non, cf. ma réponse plus haut.
Il n'y a apparemment (quelqu'un peut confirmer ?) pas de solution standard pour détecter ce genre d'erreur (qui est plutôt au niveau du système d'exploitation sur lequel s'exécute ton programme).
Donc, il faut voir du côté de l'API de ton système. Il existe sans aucun doute des solutions pour intercepter/être notifié de ces erreurs... Dans ce cas, c'est HS sur ce groupe.
<HS> Sous Windows, il me semble que tu peux utiliser le SEH (Structured Exception Handling). Recherche sur Google pour plus d'infos.
Peut-être voir sur : news:fr.comp.os.ms-windows.programmation .
Vincent
-- SL> Au fait elle est mieux ma signature maintenant ? Oui. T'enlève encore les conneries que t'as écrit dedans et c'est bon. -+- JB in <http://www.le-gnu.net> : Le neuneuttoyage par le vide -+-
Bon ca marche mais en fait je viens de voir que division par zero n'est
pas std::exception donc retour au meme point.
Non, cf. ma réponse plus haut.
Il n'y a apparemment (quelqu'un peut confirmer ?) pas de solution standard
pour détecter ce genre d'erreur (qui est plutôt au niveau du système
d'exploitation sur lequel s'exécute ton programme).
Donc, il faut voir du côté de l'API de ton système. Il existe sans aucun
doute des solutions pour intercepter/être notifié de ces erreurs... Dans
ce cas, c'est HS sur ce groupe.
<HS>
Sous Windows, il me semble que tu peux utiliser le SEH (Structured
Exception Handling). Recherche sur Google pour plus d'infos.
Peut-être voir sur : news:fr.comp.os.ms-windows.programmation .
Vincent
--
SL> Au fait elle est mieux ma signature maintenant ?
Oui. T'enlève encore les conneries que t'as écrit dedans et c'est bon.
-+- JB in <http://www.le-gnu.net> : Le neuneuttoyage par le vide -+-
Bon ca marche mais en fait je viens de voir que division par zero n'est pas std::exception donc retour au meme point.
Non, cf. ma réponse plus haut.
Il n'y a apparemment (quelqu'un peut confirmer ?) pas de solution standard pour détecter ce genre d'erreur (qui est plutôt au niveau du système d'exploitation sur lequel s'exécute ton programme).
Donc, il faut voir du côté de l'API de ton système. Il existe sans aucun doute des solutions pour intercepter/être notifié de ces erreurs... Dans ce cas, c'est HS sur ce groupe.
<HS> Sous Windows, il me semble que tu peux utiliser le SEH (Structured Exception Handling). Recherche sur Google pour plus d'infos.
Peut-être voir sur : news:fr.comp.os.ms-windows.programmation .
Vincent
-- SL> Au fait elle est mieux ma signature maintenant ? Oui. T'enlève encore les conneries que t'as écrit dedans et c'est bon. -+- JB in <http://www.le-gnu.net> : Le neuneuttoyage par le vide -+-
Frédéri MIAILLE
alors ce que Vincent disait à savoir : "Tu peux déjà attraper toutes les erreurs "standards" (générées par la bibliothèque standard) en utilisant un "catch (std::exception& e)", la description est dans "e.what()"." devrait suffire. Car je suppose que la division par 0 doit générer une exception en bonne et dûe forme. Sinon, généralement on contrôle. Ca peut se faire "inline" avec un "?".
alors ce que Vincent disait à savoir :
"Tu peux déjà attraper toutes les erreurs "standards" (générées par la
bibliothèque standard) en utilisant un "catch (std::exception& e)", la
description est dans "e.what()"."
devrait suffire.
Car je suppose que la division par 0 doit générer une exception en bonne et
dûe forme. Sinon, généralement on contrôle. Ca peut se faire "inline" avec
un "?".
alors ce que Vincent disait à savoir : "Tu peux déjà attraper toutes les erreurs "standards" (générées par la bibliothèque standard) en utilisant un "catch (std::exception& e)", la description est dans "e.what()"." devrait suffire. Car je suppose que la division par 0 doit générer une exception en bonne et dûe forme. Sinon, généralement on contrôle. Ca peut se faire "inline" avec un "?".
-- ___________ 2003-08-27 17:47:51 _/ _ _`_`_`_) Serge PACCALIN -- sp ad mailclub.net _L_) Il faut donc que les hommes commencent -'(__) par n'être pas fanatiques pour mériter _/___(_) la tolérance. -- Voltaire, 1763
Le mercredi 27 août 2003 à 16:14, Ben a écrit dans fr.comp.lang.c++ :
J'utilise vc++ et "catch (std::exception& e)" ne semble pas possible (je
ne peux pas compiler).
#include <stdexcept>
OK thank you
I found the way as well by including <exception>, it seems to work.
Bon ca marche mais en fait je viens de voir que division par zero n'est pas
std::exception donc retour au meme point.
[Tu peux répondre en-dessous, s'il te plaît ? Le français se lit de haut
en bas...]
Si tu as plusieurs types d'exceptions à traiter, tu peux mettre
plusieurs catch(), à raison d'un par type, avec catch(...) en dernier :
--
___________ 2003-08-27 17:47:51
_/ _ _`_`_`_) Serge PACCALIN -- sp ad mailclub.net
_L_) Il faut donc que les hommes commencent
-'(__) par n'être pas fanatiques pour mériter
_/___(_) la tolérance. -- Voltaire, 1763
-- ___________ 2003-08-27 17:47:51 _/ _ _`_`_`_) Serge PACCALIN -- sp ad mailclub.net _L_) Il faut donc que les hommes commencent -'(__) par n'être pas fanatiques pour mériter _/___(_) la tolérance. -- Voltaire, 1763
Vincent Richard
Frédéri MIAILLE wrote:
Car je suppose que la division par 0 doit générer une exception en bonne et dûe forme.
Non, pas d'après la norme (c'est un UB), et je ne connais pas de plate-forme qui permette directement de gérer les divisions par 0 sous forme d'exceptions C++.
<HS> Il y a quelque chose qui y ressemble assez (avec des mots-clés non standards) sous Windows avec Visual C++ : voir mon précédent message concernant le SEH (Structured Exception Handling). </HS>
Vincent
-- SL> Au fait elle est mieux ma signature maintenant ? Oui. T'enlève encore les conneries que t'as écrit dedans et c'est bon. -+- JB in <http://www.le-gnu.net> : Le neuneuttoyage par le vide -+-
Frédéri MIAILLE wrote:
Car je suppose que la division par 0 doit générer une exception en
bonne et dûe forme.
Non, pas d'après la norme (c'est un UB), et je ne connais pas de
plate-forme qui permette directement de gérer les divisions par 0 sous
forme d'exceptions C++.
<HS>
Il y a quelque chose qui y ressemble assez (avec des mots-clés non
standards) sous Windows avec Visual C++ : voir mon précédent message
concernant le SEH (Structured Exception Handling).
</HS>
Vincent
--
SL> Au fait elle est mieux ma signature maintenant ?
Oui. T'enlève encore les conneries que t'as écrit dedans et c'est bon.
-+- JB in <http://www.le-gnu.net> : Le neuneuttoyage par le vide -+-
Car je suppose que la division par 0 doit générer une exception en bonne et dûe forme.
Non, pas d'après la norme (c'est un UB), et je ne connais pas de plate-forme qui permette directement de gérer les divisions par 0 sous forme d'exceptions C++.
<HS> Il y a quelque chose qui y ressemble assez (avec des mots-clés non standards) sous Windows avec Visual C++ : voir mon précédent message concernant le SEH (Structured Exception Handling). </HS>
Vincent
-- SL> Au fait elle est mieux ma signature maintenant ? Oui. T'enlève encore les conneries que t'as écrit dedans et c'est bon. -+- JB in <http://www.le-gnu.net> : Le neuneuttoyage par le vide -+-