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 :

Impossible d'attraper une erreur [FAQ]


Sujet :

C++Builder

  1. #1
    Membre régulier Avatar de jagboys
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    166
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 166
    Points : 111
    Points
    111
    Par défaut Impossible d'attraper une erreur
    Bonjour,

    Dans mon programme j'utilise un composant TSocketClient pour communiquer avec un serveur. Lorsqu'il y a une erreur, le composant génère une erreur ESocketError et célà affiche un fenetre supplémentaire. Afin d'eviter celà j'ai mis un "try" & "catch" pour bypasser l'erreur. Mais j'ai toujours le fenetre d'erreur :

    Voici mon code :

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    /---------------------------------------------------------------------------
    bool __fastcall TVFM::MessageSend(AnsiString Message)
    {
            try
            {
                    int n = 0;
                    n = CliSock->Socket->SendText(Message);
                    if(n != 0)
                            return true;
                    else
                            return false;
            }
            catch(ESocketError& e)
            {
                    return false;
            }
    }
     
    //---------------------------------------------------------------------------
    void __fastcall TVFM::Button1Click(TObject *Sender)
    {
            AnsiString m = FindDirForFilesExt("C:\\Jobs","DAT");
            try
            {
                    MessageSend(ReadMesageFile(m));
            }
            catch(ESocketError &e)
            {
                    UpdateHistoryList("ESocketError !!!", true);
            }
    }
    J'ai vu un sujet similaire :
    www.developpez.net/forums/viewtopic.php?t=256195
    Mais j'ai exactement le meme code.

    Comment faire ?
    Est ce que qeulqu'un aurait une idée ?
    Merci d'avance.

  2. #2
    Membre chevronné
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Points : 2 187
    Points
    2 187
    Billets dans le blog
    1
    Par défaut
    bonjour,
    la classe TClientSocket dispose déja d'une interception des erreurs en mode Asynchrone avec l'évenemment OnError

    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
    17
    18
    19
    20
    21
     
    // exemple de la gestion d'erreur
     
    void __fastcall TForm1::ClientSocket1Error(TObject *Sender,
          TCustomWinSocket *Socket, TErrorEvent ErrorEvent, int &ErrorCode)
    {
      char* lpMsgBuf;
      FormatMessage(
          FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
          NULL,
          WSAGetLastError(),
          MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
          (LPTSTR) &lpMsgBuf,
          0,
          NULL
      );
      MessageBox( NULL, lpMsgBuf, "Erreur de Communication", MB_OK|MB_ICONERROR );
      LocalFree( lpMsgBuf );
      ErrorCode=0;  // on inhibe l'exception
     
    }
    Cordialement

  3. #3
    Membre régulier Avatar de jagboys
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    166
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 166
    Points : 111
    Points
    111
    Par défaut SocketError
    Bonsoir,

    Merci beaucoup pour ton exemple et ton expliquation. C'est très clair maintenant.

    Merci bien.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. mises-à-jour impossibles: dpkg indique une erreur
    Par Celano dans le forum Administration système
    Réponses: 5
    Dernier message: 02/03/2012, 19h30
  2. Réponses: 3
    Dernier message: 18/06/2007, 20h14
  3. Réponses: 9
    Dernier message: 08/08/2006, 10h42
  4. erreur " impossible de focaliser une fenêtre désactivée
    Par djouahra.karim1 dans le forum Bases de données
    Réponses: 2
    Dernier message: 05/12/2004, 11h21
  5. Réponses: 25
    Dernier message: 23/11/2004, 19h20

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