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

EDI Delphi Discussion :

[Kylix] [Kylix 3 C++] Capture d'une exception impossible


Sujet :

EDI Delphi

  1. #1
    DrQ
    DrQ est déconnecté
    Membre expérimenté
    Avatar de DrQ
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 388
    Points : 1 515
    Points
    1 515
    Par défaut [Kylix 3 C++] Capture d'une exception impossible
    Bonjour,

    Donc voici le 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
     
        pgCnx->Params->Values["User_Name"] = WideCharToString(edLogin->Text.data());
        pgCnx->Params->Values["Password"] = WideCharToString(edPassword->Text.data());
        pgCnx->Params->Values["Hostname"] = WideCharToString(edServer->Text.data());
        pgCnx->Params->Values["Database"] = WideCharToString(edDatabase->Text.data());
     
        StatusBar->Panels->Items[1]->Text = "Connection en cours...";
        try
        {
            pgCnx->Open();
            while(pgCnx->ConnectionState == csStateConnecting);
        } catch(EDatabaseError &E)
        {
            Application->MessageBox("Erreur de connexion", "Erreur de connexion", TMessageButtons() << smbOK, smsInformation, smbOK);
        } catch(...)
        {
            Application->MessageBox("Erreur inconnue","Erreur de connexion", TMessageButtons() << smbOK, smsInformation);
        }
    pgCnx est un composant TSQLConnection.
    Quand le Open émet une exception (normalement de type EDatabaseError) je suis censé rentrer dans le premier catch. Et bien non j'ai une erreur me disant que je ne n'ai pas capturer une exception de type EDatabaseError. Suite à çà j'ai rajouté le deuxième catch qui capture toutes les autres exceptions mais j'ai le même problème.

    Certains d'entre vous auraient ils déjà ce problème ?

    Pour info si je remplie correctement les paramètres de mon objet pgCnx la connexion se déroule très bien.

  2. #2
    RDM
    RDM est déconnecté
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 424
    Points : 2 927
    Points
    2 927
    Par défaut
    il est possible qu'une autre exception que EDatabaseError soit généré.
    je rappelle qu'en C++ il n'y a pas de racine commune aux classes et qu'il est possible de faire un throw d'a peu près n'importe quoi:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    throw 1;
     
    class MyException{};
    throw MyException;
    ...

  3. #3
    DrQ
    DrQ est déconnecté
    Membre expérimenté
    Avatar de DrQ
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 388
    Points : 1 515
    Points
    1 515
    Par défaut
    C'est bien pour cela que le deuxième catch est censé (je dis bien censé) récupéré toutes les autres exceptions.

  4. #4
    DrQ
    DrQ est déconnecté
    Membre expérimenté
    Avatar de DrQ
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 388
    Points : 1 515
    Points
    1 515
    Par défaut
    A première vue je ne suis pas le seul. En réponse on va diriger sur http://www.vitavoom.com

    D'après leur doc une fois le pilote installé, il suffit de changer TSQLConnection par TPGESQLConnection mais ça ne marche pas. Donc quelqu'un a t'il déjà utilisé ces pilotes ?

Discussions similaires

  1. [Débutant] capturer une exception ?
    Par 7evo7 dans le forum VB.NET
    Réponses: 9
    Dernier message: 10/06/2011, 15h17
  2. [Forms 6i] Capturer une exception FRM-XX
    Par macben dans le forum Forms
    Réponses: 1
    Dernier message: 05/02/2009, 16h33
  3. Réponses: 2
    Dernier message: 23/03/2004, 13h23
  4. Réponses: 2
    Dernier message: 11/08/2003, 10h43
  5. Réponses: 4
    Dernier message: 07/12/2002, 08h34

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