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

  1. #1
    Membre expérimenté
    [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.
    1)http://www.developpez.com/cours/
    2)Recherche
    3)Posez votre question en suivant les règles
    _oOo-DrQ-oOo_

  2. #2
    Membre émérite
    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;
    ...
    RDM
    Tout Est Relatif
    Rubrique XMLRAD: http://xmlrad.developpez.com
    FAQ XMLRAD: http://xmlrad.developpez.com/faq/

  3. #3
    Membre expérimenté
    C'est bien pour cela que le deuxième catch est censé (je dis bien censé) récupéré toutes les autres exceptions.
    1)http://www.developpez.com/cours/
    2)Recherche
    3)Posez votre question en suivant les règles
    _oOo-DrQ-oOo_

  4. #4
    Membre expérimenté
    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 ?
    1)http://www.developpez.com/cours/
    2)Recherche
    3)Posez votre question en suivant les règles
    _oOo-DrQ-oOo_

###raw>template_hook.ano_emploi###