Bonjour, quelqu'un peut -ilm'expliquer clairement à quoi dert une exception? Je ne vois pas pourquoi un simple if ne ferait pas l'affaire.
J'ai déja regarder de la doc dessus mais je ne vois pas la différence
Merci.
Bonjour, quelqu'un peut -ilm'expliquer clairement à quoi dert une exception? Je ne vois pas pourquoi un simple if ne ferait pas l'affaire.
J'ai déja regarder de la doc dessus mais je ne vois pas la différence
Merci.
Les exceptions sont utilisées pour capturer une eventuelle erreur lors de l'execution de ton programme, comme cela, si tu as récupéré une exception, tu peut afficher ton propre message d'erreur au lieu de message d'erreur windows auquel on ne comprand pas toujours tout, ou tu peut aussi lors d'une erreur executer un code spécial pour contrecarer l'erreur, etc...
ici, je dois mettre une exception?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 void __fastcall TForm2::RetirerClick(TObject *Sender) { if(StringGrid1->RowCount==2) ShowMessage("Attention, vous ne pouvez pas supprimer cette ligne"); else { StringGrid1->RowCount--; StringGrid1->Height=(StringGrid1->Height-25); } }
cherche dans les blocs de code
tu peux ainsi avoir par exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 try { } catch(...) { }
ainsi, dans ce code, ton si va s'executer mais je gerera pas une eventuelle erreur D'EXECUTION, ce sera donc le bloc catch qui va intercepter l'ereur (au lieu de laisser faire windows) et faire ce que tu veux en cas d'erreur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 try { if(condition) { //faire } } catch() { //faire si erreur }
est-je etais clair???
Quelques fautes de frappe qui viennent un peu obscurcir ton raisonnement mais sinon ca va.Envoyé par doudouallemand
![]()
non j'ai pas treès bien compris. tu peux réexpliquer?Merci. Dans le catch je met quoi? Sachatnque je ne sais pas si il y a une erreur quel genre d'errreur elle sera.
Ici, si j'ai bien compris, tu veut que l'on ne puisse pas retirer de ligne si il n'y en a que deux, c'est donc une condition et non pas une exception, puisque c'est toi qui veut faire la condition, enfin si j'ai bien compris ce que tu voulais, si tu veut mettre une capture d'exception à cette endroit, tu peut mais personnellement je n'en voit pas l'intérêt.Envoyé par sandball22
dans le catch, tu mets du code qui va faire quelque chose dans le cas d'une erreur (par exemple, un message a l'utilisateur).
pour savoir d'ou vient l'erreur, il me semble que tu peux faire :
tu confirme pottiez???
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 try { //... } catch(Exception e) { //e contient l'erreur et tu peux faire e.c_str() }
C'est exacte à un petit détail pres mais qui a son importance :Envoyé par doudouallemand
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 try { //... } catch(Exception &e) { //e contient l'erreur et tu peux faire e.c_str() }
merci beaucoup pour cette correction, il m'avait echappe en effet...
oui je suis d'accord il s'agit d'une condition. Quand alors je dois utiliser une exception? Avez-vous un exemple qui m'aidrait à comprendre? car je suis perdu. Merci
Il faut utiliser une exception lorsqu'il y a un risque d'erreur, par exemple lorsque ton application contient un client socket et que tu veut connecter celui-ci à un serveur, tu ne sait pas si le serveur est lancé, mais tu cherche quand même à te connecté, si le serveur n'est pas lancé, cela te provoquera une erreur, que tu peut capter grace aux exceptions, pour effectué la suite en sachant par exemple que tu n'est pas connecté.Envoyé par sandball22
Ok? Je compren mieux. Donc dans mon exemple, si je mets une exception :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 try { //... if(StringGrid1->RowCount==2) ShowMessage("Attention, vous ne pouvez pas supprimer cette ligne"); else { StringGrid1->RowCount--; StringGrid1->Height=(StringGrid1->Height-25); } } catch(Exception &e) { //e contient l'erreur et tu peux faire e.c_str() ShowMessage("Erreur"); }
Cela marche?
Sinon j'ai une autre question, quand le message d'erreur s'affiche, l'en tete de la fenêtre porte le nom de mon projet or je voudrais mettre "Erreur" ou "attention". comment dois-je faire?
Pour cela il suffit de mettre ce code juste avant ton ShowMessage :
Code : Sélectionner tout - Visualiser dans une fenêtre à part Form1->Caption = "Ce que tu veut écrire" ;
Oui mais ce n'est pas form1. je ne sais pas comment il s'appelle le form pour showmessage.
Pour le ShowMessage je ne sais pas, peut etre en récupérant le Handle de cette fenetre.Envoyé par sandball22
J'ai contourné mon problème en prenant
Code : Sélectionner tout - Visualiser dans une fenêtre à part int res = MessageBox(0,"Attention, vous ne pouvez pas supprimer cette ligne.\n", "Attention", MB_OK);
Et cela fonctionne. Merci pour votre aide.
Partager