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 :

Eviter les bugs : try finally ?


Sujet :

Delphi

  1. #1
    Débutant
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    886
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 886
    Points : 330
    Points
    330
    Par défaut Eviter les bugs : try finally ?
    salut

    j'ai une application qui a parfois des bug : message d'erreur, surtout indice -1 pour les listbox et parfois plantage carrément de l'exe qui se kille ...

    j'aimerais avoir une version provisoire sans ce genre de prob vu que je n'ai pas encore le temps de chercher les anomalies

    j'ai connu : try ... finaly ... end;

    mais vu que je ne sais pas d'ou viennent les exeptions, j'aimerais savoir s'il y avait un moyen de protéger tout le prog ?

    ou alors qu'est ce que vous me conseillez ?

    car à par le kill et les msgbox, ça va, on peut tjrs utiliser le programme ...

  2. #2
    Membre éprouvé
    Avatar de neilbgr
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2004
    Messages
    651
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 651
    Points : 1 177
    Points
    1 177
    Par défaut
    Il y a surtout le Try.. Except..
    Pour savoir comment l'utiliser comme il faut, cf http://delphi.developpez.com/cours/l...n-des-erreurs/
    Ensuite, le tout est une affaire de développement "propre"...

  3. #3
    Débutant
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    886
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 886
    Points : 330
    Points
    330
    Par défaut
    je suis d'accord pour le développement propre c'est pkoi c'est provisoire ... c'est une appli web qui tourne 24h/24, donc je ne veux pas fermer le site le temps de trouver les différentes erreurs

    et t'images le nombre de procédure que je dois avoir ... mettre des "try" partout est un peu relou, c'est pourquoi je demandais s'il y avait mieu ...

  4. #4
    Membre éclairé Avatar de Kaféine
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 569
    Points : 736
    Points
    736
    Par défaut
    Salut,

    Généralement on colle un bloc try finally dans un try except et vice versa
    pour libérer les objets et intercepter les exceptions.

    L'idée est d'implémenter un gestionnaire pour l'évènement OnException de l'objet TApplication.

    pour aller au plus simple, tu colle un TApplicationEvent et tu met rien dans le OnException ou alors tu loggue les exceptions dans un fichier.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    procedure TForm1.ApplicationEvents1Exception(Sender: TObject; E: Exception);
    begin
      //rien ou loggue dans un fichier
    end;
    en espérant que le provisoire ne dure pas .....

  5. #5
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par neilbgr
    Ensuite, le tout est une affaire de développement "propre"...
    Pas mieux.
    Dans ton cas utilise MadExcept(cf. google), gratuit pour un usage non-commercial, qui te permettra de trouver plus facilement l'origine des bugs restant dans ton appli.

  6. #6
    Débutant
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    886
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 886
    Points : 330
    Points
    330
    Par défaut
    Citation Envoyé par Kaféine Voir le message
    Salut,

    Généralement on colle un bloc try finally dans un try except et vice versa
    pour libérer les objets et intercepter les exceptions.

    L'idée est d'implémenter un gestionnaire pour l'évènement OnException de l'objet TApplication.

    pour aller au plus simple, tu colle un TApplicationEvent et tu met rien dans le OnException ou alors tu loggue les exceptions dans un fichier.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    procedure TForm1.ApplicationEvents1Exception(Sender: TObject; E: Exception);
    begin
      //rien ou loggue dans un fichier
    end;
    en espérant que le provisoire ne dure pas .....
    ça m'a l'air dune bonne idée, mais je n'ai pas compris, peux tu me donner plus de précision stp ?

  7. #7
    Membre régulier Avatar de djeckelle
    Femme Profil pro
    Architecte de système d'information
    Inscrit en
    Septembre 2004
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 46
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2004
    Messages : 87
    Points : 101
    Points
    101
    Par défaut
    Bonjour à tous,

    Pour la gestion des exceptions, le bloc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Try
      // Morceau de code à protéger
    Except
      on E : Exception do
        begin
          // Action à réaliser sur error du type précédent (Exception, EStringListError,EAccessViolation,EConvertError ...)
         
         // Pour afficher un message clair de ton erreur
         Showmessage(E.Message);
        end;
    End;

    Tu peux utiliser Abort; pour une erreur dite "silencieuse" mais ce ne sera pas très propre

    Ensuite dans la FAQ de developpez.com tu trouveras de bon conseils et de bonne méthodes

    Bon courage

Discussions similaires

  1. Optimiser les performances try/catch ?
    Par KiLVaiDeN dans le forum Langage
    Réponses: 4
    Dernier message: 14/01/2014, 13h47
  2. Eviter les doublons
    Par cyrill.gremaud dans le forum ASP
    Réponses: 5
    Dernier message: 14/09/2005, 12h37
  3. Réponses: 4
    Dernier message: 13/08/2004, 18h39
  4. [langage] 2 fichier dans 1 en evitant les doublons
    Par remixxl dans le forum Langage
    Réponses: 6
    Dernier message: 26/07/2004, 17h05
  5. [C#] Comment eviter les boucles infinies ?
    Par Thomas Lebrun dans le forum C#
    Réponses: 12
    Dernier message: 09/06/2004, 00h04

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