IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++Builder Discussion :

Gestion des exceptions


Sujet :

C++Builder

  1. #1
    Membre �clair�
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    342
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 342
    Par d�faut Gestion des exceptions
    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.

  2. #2
    Expert confirm�

    Avatar de pottiez
    Homme Profil pro
    D�veloppeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activit� : D�veloppeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par d�faut
    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...

  3. #3
    Membre �clair�
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    342
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 342
    Par d�faut re
    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);
      }
     
    }

  4. #4
    Membre �prouv�
    Avatar de doudoustephane
    Homme Profil pro
    G�rant
    Inscrit en
    Ao�t 2005
    Messages
    1 129
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 40
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activit� : G�rant

    Informations forums :
    Inscription : Ao�t 2005
    Messages : 1 129
    Par d�faut
    cherche dans les blocs de code

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    try
    {
     
    }
    catch(...)
    {
     
    }
    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
    10
    11
    12
     
    try
    {
       if(condition)
       {
           //faire
       }
    }
    catch()
    {
        //faire si erreur
    }
    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.

    est-je etais clair???

  5. #5
    Expert confirm�

    Avatar de pottiez
    Homme Profil pro
    D�veloppeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activit� : D�veloppeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par d�faut
    Citation Envoy� par doudouallemand
    est-je etais clair???
    Quelques fautes de frappe qui viennent un peu obscurcir ton raisonnement mais sinon ca va.

  6. #6
    Membre �clair�
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    342
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 342
    Par d�faut re
    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.

  7. #7
    Expert confirm�

    Avatar de pottiez
    Homme Profil pro
    D�veloppeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activit� : D�veloppeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par d�faut
    Citation Envoy� par sandball22
    ici, je dois mettre une exception?


    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);
    }

    }
    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.

  8. #8
    Membre �prouv�
    Avatar de doudoustephane
    Homme Profil pro
    G�rant
    Inscrit en
    Ao�t 2005
    Messages
    1 129
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 40
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activit� : G�rant

    Informations forums :
    Inscription : Ao�t 2005
    Messages : 1 129
    Par d�faut
    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 :
    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()
    }
    tu confirme pottiez???

  9. #9
    Expert confirm�

    Avatar de pottiez
    Homme Profil pro
    D�veloppeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activit� : D�veloppeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par d�faut
    Citation Envoy� par doudouallemand
    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 :
    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()
    }
    tu confirme pottiez???
    C'est exacte � un petit d�tail pres mais qui a son importance :

    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()
    }

  10. #10
    Membre �prouv�
    Avatar de doudoustephane
    Homme Profil pro
    G�rant
    Inscrit en
    Ao�t 2005
    Messages
    1 129
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 40
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activit� : G�rant

    Informations forums :
    Inscription : Ao�t 2005
    Messages : 1 129
    Par d�faut
    merci beaucoup pour cette correction, il m'avait echappe en effet...

  11. #11
    Membre �clair�
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    342
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 342
    Par d�faut re
    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

  12. #12
    Expert confirm�

    Avatar de pottiez
    Homme Profil pro
    D�veloppeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activit� : D�veloppeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par d�faut
    Citation Envoy� par sandball22
    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�.

  13. #13
    Membre �clair�
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    342
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 342
    Par d�faut re
    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?

  14. #14
    Expert confirm�

    Avatar de pottiez
    Homme Profil pro
    D�veloppeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activit� : D�veloppeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par d�faut
    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" ;

  15. #15
    Membre �clair�
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    342
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 342
    Par d�faut re
    Oui mais ce n'est pas form1. je ne sais pas comment il s'appelle le form pour showmessage.

  16. #16
    Expert confirm�

    Avatar de pottiez
    Homme Profil pro
    D�veloppeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activit� : D�veloppeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par d�faut
    Citation Envoy� par sandball22
    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.

  17. #17
    Membre �clair�
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    342
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 342
    Par d�faut re
    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.

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. [ADOConnect] gestion des exception en tout temps
    Par portu dans le forum Bases de donn�es
    R�ponses: 1
    Dernier message: 20/04/2005, 19h01
  2. [ORACLE 9i] Gestion des exceptions
    Par sygale dans le forum SQL
    R�ponses: 6
    Dernier message: 19/08/2004, 15h06
  3. Gestion des exception (EOleException)
    Par shurized dans le forum Bases de donn�es
    R�ponses: 5
    Dernier message: 30/06/2004, 17h25
  4. [XMLRAD] gestion des exceptions
    Par pram dans le forum XMLRAD
    R�ponses: 2
    Dernier message: 28/01/2003, 17h48
  5. c: gestion des exceptions
    Par vince_lille dans le forum C
    R�ponses: 7
    Dernier message: 05/06/2002, 14h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo