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

Langage Delphi Discussion :

Gestion des exceptions


Sujet :

Langage Delphi

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    287
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 287
    Points : 91
    Points
    91
    Par défaut Gestion des exceptions
    bonjour,

    Est-il possible de récupérer précisément une exception ?

    Je prends l'exemple d'une exception EdatabaseError, j'aimerais avoir une identification précise de l'erreur pour pouvoir la traiter différement (faire telle action si erreur d'enregistrement, ou telle autre action si l'élément inserer existe déjà).

    actuellement avec le TRY, je récupère un message, mais si j'avais un identifiant unique je serais sur du traitement.

    Merci

  2. #2
    Membre expert
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Points : 3 575
    Points
    3 575
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    try
    ...
    except
      on E: EDataBaseError do
        begin
        ... TON TRAITEMENT EN ERREUR
        end;
    end;
    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    287
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 287
    Points : 91
    Points
    91
    Par défaut
    Merci, mais il existe plusieurs types d'erreur EdataBaseError (erreur dans l'enregistrement, pb sur une transaction, pb de connexion...)

    En fait j'aimerais avoir précisement l'erreur (le traitement d'une erreur de connexion n'est pas la même qu'une erreur liée à une transaction en cours)

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    287
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 287
    Points : 91
    Points
    91
    Par défaut
    Ce que j'ais déjà dans mon code

    try
    ...
    except
    on E: EDatabaseError do showmessage(... + E.message);
    end;

  5. #5
    Membre expert
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Points : 3 575
    Points
    3 575
    Par défaut
    Effectivement tu n'as que le message comme propriété, et je comprends que tu recherches une ID d'error pour tes traitements.

    Par contre j'ai trouvé, EUpdateError, qui est un descendant de EDataBaseError, qui contient des ID d'erreurs, peut-être que si tu recherches par là tu trouveras ton bonheur...
    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    287
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 287
    Points : 91
    Points
    91
    Par défaut
    En fait celà ne me donne pas de code (toujours 0).

    Ce que j'ais fait
    On E: EdatabaseError do
    begin
    If EUpdateError(E).ErrorCode = ... then
    ....
    end

  7. #7
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 665
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 665
    Points : 6 983
    Points
    6 983
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    try
     
    except
       on E: Exception do
       begin
          Application.MessageBox(PChar('.Erreur :  xxx a échoué !' + #13#10 + E.Message), 'Titre', MB_ICONERROR + MB_OK);
       end;
    end;
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)

  8. #8
    Membre habitué Avatar de Guile
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Avril 2002
    Messages : 130
    Points : 144
    Points
    144
    Par défaut
    Si tu utilises les composants Interbase, j'ai déjà traité différentes erreurs de BDD de cette manière en ajoutant dans ma clause use IBErrorCodes :

    e étant un EDataBaseError

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (EIBClientError(e).IBErrorCode = isc_foreign_key)
    Tu peux explorer IBErrorCodes pour la liste des erreurs existantes.
    Il existe 10 sortes de personnes, ceux qui comprennent le binaire et les autres...

  9. #9
    Membre expert
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Points : 3 575
    Points
    3 575
    Par défaut
    Je n'utilise pas Interbase.

    Mais dans ton code, je vois que tu cast EDataBaseError en EUpdateError,
    Donc ca me parait logique que les prop. spécifique de EUpdateError soit non remplies car l'erreur créée est de type EDataBaseError

    As tu essayé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    on E : EUpdateError do CodeErreur := E.ErrorCode
    ? (j'ai rien essayé de tout ca)

    Sinon, je sais pas.... A part tester les chaines de car. d'erreurs. mais bon...
    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    287
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 287
    Points : 91
    Points
    91
    Par défaut
    oui, j'ais fait l'essai, mais l'erreur n'est pas prise en compte. Il ne répond qu'à une exception EDATABASEERROR.

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