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

Delphi Discussion :

[D7] Créer gestionnaire d'exception dans fonction


Sujet :

Delphi

  1. #1
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Points : 5 100
    Points
    5 100
    Par défaut [D7] Créer gestionnaire d'exception dans fonction
    Bonjour,

    Plutôt que de gérer les exceptions coup à coup dans les "try ... except ... end;", je souhaiterai passer l'exception à une fonction qui traiterait tous les cas.

    Ex :
    dans le programme sur un bloc protégé.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
      try
        ...
      except
       on e: exception do
        if not GereErreur(e) then begin {...} end; // la fonction
      end;
    Mais je ne sais pas comment ensuite traiter cas par cas dans cette fonction.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function GereErreur(E : Exception) : boolean;
    begin
      //traitement de tous les cas
        // EConvertError
        ...
        // EDatabaseError
        ...
        // etc ....
    end;
    J'ai l'impression q'il n'y a pas moyen de déterminer le type d'exception.
    Mais ce n'est peut-être pas une bonne idée de faire comme ça.

    Il existe bien la possibilité généraliste directe (Dans ce cas pas besoin de fonction) mais cela n'est pas satisfaisant.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.ShowException(E);
    Si vous avez une idée, n'hésitez pas.
    A+, Hervé.

  2. #2
    Membre à l'essai
    Inscrit en
    Janvier 2007
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 30
    Points : 23
    Points
    23
    Par défaut
    Salut

    Tu peux essayer de tester le classname de ton erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    function GereErreur(E : Exception) : boolean;
    begin
        Result := True;
     
        if E.ClassName = 'EConvertError' then
        ...
        else
        if E.ClassName = 'EDatabaseError' then
        ...
        else
        Result := False;
    end;

  3. #3
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Points : 5 100
    Points
    5 100
    Par défaut Très bonne solution.
    Super Alchemist, cela fonctionne très bien. Merci beaucoup.

    Il ne me reste plus qu'à ajouter les noms des classes d'exception au conteneur d'un stringlist et de faire un "case indexof(e.classname) of" derrière.

    Merci, au revoir, Hervé.

  4. #4
    Expert éminent sénior

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Points : 10 154
    Points
    10 154
    Par défaut
    Non ! Au secours ! Pas ça... NOOOONNN...



    Utilise plutôt l'opérateur is :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if E is EConvertError then
      // ...
    else if E is EDatabaseError then
      // ...
    else
      // ...

  5. #5
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Points : 5 100
    Points
    5 100
    Par défaut
    Je veux bien, mais peux-tu m'expliquer la raison ?
    Je présume que ce doit être plus sur et plus approprié. (Déduit de ma lecture dans la Doc Delphi sur le 'is')
    De plus je pourrai traiter mes classes d'exception perso.

    A+, Hervé.

  6. #6
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Points : 5 100
    Points
    5 100
    Par défaut
    Merci sjrd, ta solution résoud tous les problèmes qui me restaient.

    Je peux même traiter mes exceptions personnalisées.

    Encore merci, A+, Hervé.

  7. #7
    Membre à l'essai
    Inscrit en
    Janvier 2007
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 30
    Points : 23
    Points
    23
    Par défaut
    Ah oui, voila quelque chose de beaucoup plus propre (désolé je débute avec la gestion des exceptions), je vais pouvoir faire quelques modifs moi aussi ...

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

Discussions similaires

  1. id créer avec exception dans fonction
    Par gKsam dans le forum Requêtes
    Réponses: 7
    Dernier message: 02/11/2010, 14h53
  2. Impossible de créer une table temporaire dans une fonction
    Par bossun dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 05/10/2007, 10h03
  3. [D5] Créer dynamiquement des variables dans une fonction
    Par MelkInarian dans le forum Delphi
    Réponses: 11
    Dernier message: 14/04/2007, 12h16
  4. créer un type hidden dans une fonction javascript
    Par amelhog dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 27/05/2005, 12h17
  5. gestionnaire d'Exception dans DLL
    Par pirbd dans le forum Langage
    Réponses: 2
    Dernier message: 03/03/2005, 18h58

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