 |
C++Talk.NET C++ language newsgroups
|
| View previous topic :: View next topic |
| Author |
Message |
Xavier Guest
|
Posted: Tue Apr 03, 2007 9:28 pm Post subject: Re: |
|
|
Merci a tous deux pour vos réponses. Je crois que j'ai pas du comprendre
grand chose a la génération/réception d'une exeption (je pensais qu'une
exception était levé par une erreur qui renvoyait alors vers le bloc
catch...).
Bon je sais que l'exemple Division par zero n'etait pas judicieux (il faut
le prendre pour un exemple pour illustrer le fonctionnement de ma fonction).
Pour tout dire la fonction qui me pose "probleme" est un peu plus complexe
(une dizaine d'argument que l'utilisateur) et pour ne pas gérer les
arguments entrants avec des if (ce que je ferais quand même a terme), je
voulais pouvoir récuperer un résultat sans faire planter le systeme...
Je vais me replonger dans les exceptions ...
Xavier |
|
| Back to top |
|
 |
Sylvain Guest
|
Posted: Tue Apr 03, 2007 9:45 pm Post subject: Re: |
|
|
Xavier wrote on 03/04/2007 18:28:
| Quote: | Merci a tous deux pour vos réponses. Je crois que j'ai pas du comprendre
grand chose a la génération/réception d'une exeption (je pensais qu'une
exception était levé par une erreur qui renvoyait alors vers le bloc
catch...).
|
ton code gère correctement la réception d'exception mais pas la levée.
aucune opération élémentaire ne génère elle-même une exception, c'est le
code que tu écris, ou les librairies utilisées, qui lève explicitement
une exception.
note également que (quasiment) tout peux servir d'arguments d'exception,
selon ce que tu lèves, ou ce que des libs tierces lèvent, tu devras
fournir les handlers (récepteurs) d'exception correspondant.
au passage, les exceptions peuvent bien surs être chainée, sans en
répercutant l'argument reçu (syntaxe "throw") sans en levant une
nouvelle exception.
exemple:
double Division(double a, double b){
try {
try {
if (b == 1.0)
throw "ça va pas changer grand chose";
if (b == 0.0)
throw (double) -1.0;
return a / b;
}
catch (const char* msg){
cout << msg << endl;
throw (double) a;
}
catch (double value){
throw; // relève une exception avec value
}
}
catch (double resultCode){
return resultCode;
}
}
Sylvain. |
|
| Back to top |
|
 |
Xavier Guest
|
Posted: Tue Apr 03, 2007 10:23 pm Post subject: Re: |
|
|
Merci sylvain pour tes explications. Je commence a saisir la logique. Je
crois que je dois encore approfondir pour saisir tout l'interet des
exceptions. Mais les brumes commencent a se lever..
| Quote: | note également que (quasiment) tout peux servir d'arguments d'exception,
selon ce que tu lèves, ou ce que des libs tierces lèvent, tu devras
fournir les handlers (récepteurs) d'exception correspondant.
au passage, les exceptions peuvent bien surs être chainée, sans en
répercutant l'argument reçu (syntaxe "throw") sans en levant une nouvelle
exception.
exemple:
double Division(double a, double b){
try {
try {
if (b == 1.0)
throw "ça va pas changer grand chose";
if (b == 0.0)
throw (double) -1.0;
return a / b;
}
catch (const char* msg){
cout << msg << endl;
throw (double) a;
}
catch (double value){
throw; // relève une exception avec value
Je ne comprend pas bien ce que fait le throw ici (sans argument) ? |
| Quote: | }
}
catch (double resultCode){
return resultCode;
}
} |
|
|
| Back to top |
|
 |
MeiK Guest
|
Posted: Tue Apr 03, 2007 11:35 pm Post subject: Re: Cherche applie envoi mails en nombre ??? |
|
|
Sylvain a écrit :
| Quote: | LE TROLL wrote on 03/04/2007 16:46:
Eh Dukon (ça veut dire bonjour en japonais),
oui, connard (ça veut dire connard en français)
|
Oh bah sur un autre ng il disait que "dukon" ca voulait dire
"mon ami". Si la ca veut dire autre chose, c'est que le japonais evolue
vite ! :)
| Quote: |
ben tu ferme
tu ferme*s*
|
Y'a pas de 's' a l'imperatif, non ? (les verbes du premier groupe ne
prenant pas de 's' a la 2e personne a l'imperatif ...bien que le "tu" ne
soit pas tres "imperatif", enfin bref)
--
Michael K. (epitech)
http://etudiant.epitech.net/~meik/
"SoftIce est avant tout un desassembleur."
E.D au proces en appel de Guillermito |
|
| Back to top |
|
 |
Sylvain Guest
|
Posted: Wed Apr 04, 2007 12:07 am Post subject: Re: |
|
|
Xavier wrote on 03/04/2007 19:23:
| Quote: |
double Division(double a, double b){
try {
try {
if (b == 0.0)
lève une exception ""de type"" double |
(je n'aime pas cette formule mais à défaut)
| Quote: | throw (double) -1.0;
return a / b;
}
catch (double value){
on attrape ici puisque ""l'on a lancé"" un double |
et on "re-throw" l'argument (donc un double valant 'value')
| Quote: | throw; // relève une exception avec value
Je ne comprend pas bien ce que fait le throw ici (sans argument) ?
}
}
catch (double resultCode){
le "throw" nous amène ici puisque un ""double a été lancé""
return resultCode;
}
}
|
re-thrower (ou "throw" sans argument) peut être utile pour faire le
ménage en cascade, par exemple:
Bar* bar = null;
try {
bar = new Bar();
if (!bar->f())
throw "f is not verified"; // jump to handler1
Foo* foo = null;
try {
foo = new Foo();
if (!foo->g())
throw "g is not verified"; // jump to handler2
}
catch (...){ // handler2, catch all exceptions
if (foo)
delete foo;
// cascade l'exception (quelle que soit puisque "...")
throw; // follow clean-up, jump to handler1
}
}
catch (const char* reason){ // handler1
if (bar)
delete bar;
return errorCode;
}
(la gestion des allocations ne sert qu'à illustrer les exceptions, elle
ne se justifie pas en soi).
Sylvain. |
|
| Back to top |
|
 |
Sylvain Guest
|
Posted: Wed Apr 04, 2007 12:12 am Post subject: [HC] Re: Cherche applie envoi mails en nombre ??? |
|
|
MeiK wrote on 03/04/2007 20:35:
| Quote: |
Oh bah sur un autre ng il disait que "dukon" ca voulait dire
"mon ami". Si la ca veut dire autre chose, c'est que le japonais evolue
vite !
|
oui sur fclc, mais combien de ng a-t-il spammé.
| Quote: | ben tu ferme
tu ferme*s*
Y'a pas de 's' a l'imperatif, non ? (les verbes du premier groupe ne
prenant pas de 's' a la 2e personne a l'imperatif ...bien que le "tu" ne
soit pas tres "imperatif", enfin bref)
|
"ferme la" est un impératif
"tu fermes" est un indicatif
Sylvain. |
|
| Back to top |
|
 |
LE TROLL Guest
|
Posted: Wed Apr 04, 2007 1:48 am Post subject: Re: [HC] Re: Cherche applie envoi mails en nombre ??? |
|
|
Bien vu, vile gargouille, la différence en l'indicatif et l'impératif à la
seconde personne du singulier des verbes du premier groupe!
--
Merci beaucoup, au revoir et à bientôt )
------
Romans, logiciels, email, site personnel
http://irolog.free.fr/joe.htm
------------------------------------------------------------------------------------
"Sylvain" <noSpam (AT) mail (DOT) net> a écrit dans le message de news:
4612a6ef$0$27377$ba4acef3 (AT) news (DOT) orange.fr...
| Quote: | MeiK wrote on 03/04/2007 20:35:
Oh bah sur un autre ng il disait que "dukon" ca voulait dire
"mon ami". Si la ca veut dire autre chose, c'est que le japonais evolue
vite ! :)
oui sur fclc, mais combien de ng a-t-il spammé.
ben tu ferme
tu ferme*s*
Y'a pas de 's' a l'imperatif, non ? (les verbes du premier groupe ne
prenant pas de 's' a la 2e personne a l'imperatif ...bien que le "tu" ne
soit pas tres "imperatif", enfin bref)
"ferme la" est un impératif
"tu fermes" est un indicatif
Sylvain. |
|
|
| Back to top |
|
 |
James Kanze Guest
|
Posted: Wed Apr 04, 2007 9:11 am Post subject: Re: Cherche applie envoi mails en nombre ??? |
|
|
On Apr 3, 5:12 pm, Sylvain <noS...@mail.net> wrote:
| Quote: | LE TROLL wrote on 03/04/2007 16:46:
|
[...]
| Quote: | grammaticalement à chier, ma petite cousine de 7 ans s'exprime mieux.
|
Elle sait probablement mieux se servir de l'internet aussi, et
en respecter les règles. Et on pourrait espèrer qu'elle sait
mieux se comporter en société.
AMA, le nom du posteur a tout dit.
--
James Kanze (GABI Software) email:james.kanze (AT) gmail (DOT) com
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34 |
|
| Back to top |
|
 |
James Kanze Guest
|
Posted: Wed Apr 04, 2007 9:11 am Post subject: Re: |
|
|
On Apr 3, 4:29 pm, Mathias Gaunard <loufo...@gmail.com> wrote:
| Quote: | Xavier a écrit :
Je débute et j'ai un peu de mal a gérer une exception...
try
{
Tmp = a/b;
}
Aucune exception n'est jamais levée dans ton bloc try.
|
Ça, on ne peut pas le dire non plus. Il a une division par 0 ;
c'est un comportement indéfini, et donc, on ne sait pas ce qui
va se passer.
Sur des processeurs qui implémente les flottants IEEE, la
division par 0 a un comportement défini, qui est de renvoyer la
valeur infini (et non de lever une exception). Sur les autres
processeurs que j'ai eu l'occasion d'essayer (et dans le cas de
l'arithmetique des entiers sur tous les processeurs), la
division par 0 provoque l'arrêt du programme : en fait, il lève
un « signal » (non une exception) dont le traitement par
défaut est de générer un core dump et de terminer le programme.
| Quote: | Une exception est levée par l'instruction throw et par
celle-ci uniquement.
|
Dans le cas d'un comportement indéfini, tout est possible. Y
compris une exception.
| Quote: | double Division(double a, double b)
{
if(b != 0.0) // éventuellement à affiner car ce sont des doubles?
return a/b;
return -1.0;
}
Après, je ne trouve pas cela particulièrement pertinent de définir x/0
comme étant -1...
|
C'était sans doute à titre d'exemple, et que les conditions
d'erreur sont plus complexe dans son code réel.
--
James Kanze (GABI Software) email:james.kanze (AT) gmail (DOT) com
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34 |
|
| Back to top |
|
 |
Xavier Guest
|
Posted: Wed Apr 04, 2007 9:11 am Post subject: Re: |
|
|
Merci pour l'explication Sylvain. (j'aurai pu potasser un peu la littérature
pour le "throw;")
Xavier
"Sylvain" <noSpam (AT) mail (DOT) net> a écrit dans le message de news:
4612a5d4$0$27399$ba4acef3 (AT) news (DOT) orange.fr...
| Quote: | Xavier wrote on 03/04/2007 19:23:
double Division(double a, double b){
try {
try {
if (b == 0.0)
lève une exception ""de type"" double
(je n'aime pas cette formule mais à défaut)
throw (double) -1.0;
return a / b;
}
catch (double value){
on attrape ici puisque ""l'on a lancé"" un double
et on "re-throw" l'argument (donc un double valant 'value')
throw; // relève une exception avec value
Je ne comprend pas bien ce que fait le throw ici (sans argument) ?
}
}
catch (double resultCode){
le "throw" nous amène ici puisque un ""double a été lancé""
return resultCode;
}
}
re-thrower (ou "throw" sans argument) peut être utile pour faire le ménage
en cascade, par exemple:
Bar* bar = null;
try {
bar = new Bar();
if (!bar->f())
throw "f is not verified"; // jump to handler1
Foo* foo = null;
try {
foo = new Foo();
if (!foo->g())
throw "g is not verified"; // jump to handler2
}
catch (...){ // handler2, catch all exceptions
if (foo)
delete foo;
// cascade l'exception (quelle que soit puisque "...")
throw; // follow clean-up, jump to handler1
}
}
catch (const char* reason){ // handler1
if (bar)
delete bar;
return errorCode;
}
(la gestion des allocations ne sert qu'à illustrer les exceptions, elle ne
se justifie pas en soi).
Sylvain. |
|
|
| Back to top |
|
 |
James Kanze Guest
|
Posted: Wed Apr 04, 2007 9:11 am Post subject: Re: Lecture fragmentee de binaires |
|
|
On Apr 3, 12:04 pm, Sylvain <noS...@mail.net> wrote:
| Quote: | James Kanze wrote on 03/04/2007 10:30:
hc & hs
de man, je ne connais que "Entrée" et "Q",
|
Qui ne sont pas de man:-).
man, en fait, c'est plus un wrapper qu'une application en soit.
Quand tu fais « man xxx », il cherche un fichier du nom
« xxx.* », selon certaines règles, l'envoie à travers les
formatteurs (nroff et companie), et en affiche le résultat à
travers « more ». Les commandes que tu connais sont ceux de
« more », tout bêtement.
En fait, « more » n'est qu'un défaut, qu'on peut changer au
moyen de la variable d'environement PAGER. Moi, j'ai défini
PAGER=cat (qui ne fait que copier tout bêtement), j'ai
positionné des ressources pour que xterm retienne quelque
centaines de milliers de lignes, et j'utilise le scrollbar pour
me positionner où je veux.
Mais évidemment, il reste le problème de base : il faut
connaître le nom de la commande ou de la fonction pour y accéder
à la page de man. On est quand même en 2007 ; je m'attendrais à
une fonction de recherche un peu plus puissante. Et du fait
qu'il affiche dans un xterm, il n'y a pas de graphismes, etc. Je
ne dis pas que c'est toujours utile, mais parfois, un bon image
en dit long.
| Quote: | je le trouve donc en effet
moins facile d'emploi; n'existe-t-il pas des browser pleine page pour
pages man ?
|
Je crois qu'il y a des plugin et pour emacs et pour vim pour le
faire ; comme j'ai dit, j'affiche la pleine page directement
dans mon xterm. Et il y a « less » aussi : une variante de
more qui permet aussi d'aller en arrière (mais sans le
scrollbar, etc.) Mais même alors, pas de liens hypertexte, et il
faut bien connaître une commande pour commencer.
--
James Kanze (GABI Software) email:james.kanze (AT) gmail (DOT) com
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34 |
|
| Back to top |
|
 |
LE TROLL Guest
|
Posted: Wed Apr 04, 2007 7:04 pm Post subject: Re: Cherche applie envoi mails en nombre ??? |
|
|
Qu'est-ce qui t'arrive, on dirait que tu as la diarrhée, quel est le but de
ta contribution qui soit une réponse exploitable à ma question, là je dois
dire que je ne cerne pas bien ???
--
Merci beaucoup, au revoir et à bientôt )
------
Romans, logiciels, email, site personnel
http://irolog.free.fr/joe.htm
------------------------------------------------------------------------------------
"James Kanze" <james.kanze (AT) gmail (DOT) com> a écrit dans le message de news:
1175673290.452772.103220 (AT) e65g2000hsc (DOT) googlegroups.com...
On Apr 3, 5:12 pm, Sylvain <noS...@mail.net> wrote:
| Quote: | LE TROLL wrote on 03/04/2007 16:46:
|
[...]
| Quote: | grammaticalement à chier, ma petite cousine de 7 ans s'exprime mieux.
|
Elle sait probablement mieux se servir de l'internet aussi, et
en respecter les règles. Et on pourrait espèrer qu'elle sait
mieux se comporter en société.
AMA, le nom du posteur a tout dit.
--
James Kanze (GABI Software) email:james.kanze (AT) gmail (DOT) com
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34 |
|
| Back to top |
|
 |
Olivier Miakinen Guest
|
Posted: Thu Apr 05, 2007 4:25 am Post subject: Casse-bonbons [Fut : Cherche applie envoi mails en nombre ?? |
|
|
Le 04/04/2007 09:54, James Kanze a écrit :
| Quote: | LE TROLL wrote on 03/04/2007 16:46:
AMA, le nom du posteur a tout dit.
|
Ça fait déjà quelques années que LE TROLL fait des apparitions dans des
groupes techniques, pose une question manifestement trollesque quoique
ayant un rapport avec le thème du groupe, cite à l'envers et à la suite
d'une signature à rallonge, et engueule ceux qui le lui font remarquer.
Je crois qu'il est temps, pour ceux qui ne la connaîtraient pas encore,
de rappeler l'existence de l'excellente FAQ de jr :
<http://www.langue-fr.net/rubricabrac/casse-bonbons.htm>.
Sur ce, je précise que le présent article sera mon seul et unique sur le
sujet. Si certains veulent en discuter avec moi, ce sera en privé (mon
adresse est valide). Je vous encourage bien sûr à faire comme moi et à
ne plus intervenir dans ce groupe, mais comme j'ai lu la fameuse FAQ je
ne me fais pas trop d'illusions quant à l'efficacité de ce conseil.
Cordialement,
--
Olivier Miakinen |
|
| Back to top |
|
 |
Jean-Marc Bourguet Guest
|
|
| Back to top |
|
 |
Fabien Chêne Guest
|
Posted: Thu Apr 05, 2007 11:42 pm Post subject: Re: Lecture fragmentee de binaires |
|
|
"James Kanze" <james.kanze (AT) gmail (DOT) com> writes:
[...]
| Quote: | je le trouve donc en effet
moins facile d'emploi; n'existe-t-il pas des browser pleine page pour
pages man ?
Je crois qu'il y a des plugin et pour emacs et pour vim pour le
faire
|
Pour emacs, il y a M-x man, qui ouvre la page de man entièrement dans
un tampon. De là, on peut profiter des commandes habituelles, plus les
liens entre les pages de man.
--
Fab |
|
| Back to top |
|
 |
Powered by phpBB © 2001, 2006 phpBB Group
|