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

Composants VCL Delphi Discussion :

Utilisation ApplicationEvents OnException


Sujet :

Composants VCL Delphi

  1. #1
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Octobre 2003
    Messages
    908
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 908
    Par défaut Utilisation ApplicationEvents OnException
    Salut tout le monde,

    J'ai un project ou j'ai un TApplicationEvents qui a pour but de récupérer les exceptions générées par l'application, pour faire un traitement particulier.

    Le problème que j'ai , c'est qu'il y a des exceptions qui passe trés bien dans le "OnException" et d'autre qui n'y passe pas du tout.

    Est ce que vous avez déjà eu ce problème ?

    Merci d'avance

  2. #2
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 108
    Par défaut
    Le OnException c'est la méthode du pauvre pour attraper les exceptions, seules celles qui n'ont pas été interceptées par un Try Except arrive jusqu'à là ... en général, on évite, et l'on gère les exceptions à un bloc restreint ...
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Octobre 2003
    Messages
    908
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 908
    Par défaut
    Je gère déjà mes exceptions dans des blocs restreints.

    Je voudrais simplement pouvoir envoyer un mail à chaque fois que j'ai une exception et je ne vois pas d autres méthodes que d'utiliser le composant TApplicationEvents ...

  4. #4
    Membre émérite 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
    Par défaut
    Citation Envoyé par rvzip64 Voir le message
    Je gère déjà mes exceptions dans des blocs restreints.

    Je voudrais simplement pouvoir envoyer un mail à chaque fois que j'ai une exception et je ne vois pas d autres méthodes que d'utiliser le composant TApplicationEvents ...
    Salut,

    Si tu gère les exceptions localement ca explique pourquoi elles passent pas dans OnException de l'applicationEvents.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
      try
        raise Exception.Create('Test');
      except
        raise;  //<= reraiser l'exception pour l'appevents sinon rien dans l'event
      end;

  5. #5
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Octobre 2003
    Messages
    908
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 908
    Par défaut
    Je fais déjà ça ...


    un extrait de mon code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Try
    ///BlaBla
    except
      raise Exception.create('Impossible de connecter le robot.');
    end;

  6. #6
    Membre émérite 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
    Par défaut
    alors peut être que "blahblah" ne lève pas d'exception.....
    montre ce qui pose problème plutôt parce que la on tourne en rond...

  7. #7
    Rédacteur
    Avatar de evarisnea
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2005
    Messages
    1 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 957
    Par défaut


    de plus dans le code indiqué, tu caches l'exception qui est levée en levant une nouvelle. l'exception qui sera levé dans le bloc try n'est pas forcément l'impossibilité de se connecter au "robot" !

  8. #8
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Octobre 2003
    Messages
    908
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 908
    Par défaut
    evarisnea, le code que j'ai mis était un exemple
    Je vais pas mettre les 5000 lignes de mon code source ...

  9. #9
    Rédacteur
    Avatar de evarisnea
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2005
    Messages
    1 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 957
    Par défaut
    Citation Envoyé par rvzip64 Voir le message
    Je vais pas mettre les 5000 lignes de mon code source ...
    bien entendu, mais sache quand même que nous te répondons en fonction de ce que l'on sait (les exemples de code que tu fournis)

    dans l'exemple que Kaféine t'a donné
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      try
        raise Exception.Create('Test');
      except
        raise;  //<= reraiser l'exception pour l'appevents sinon rien dans l'event
      end;
    dans le bloc except, l'instruction raise relance juste l'exception qui avait été levée.

    dans l'extrait de code que tu donnes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Try
    ///BlaBla
    except
      raise Exception.create('Impossible de connecter le robot.');
    end;
    c'est plutôt une nouvelle exception que tu lances

    d'où mon post
    Citation Envoyé par evarisnea
    de plus dans le code indiqué, tu caches l'exception qui est levée en levant une nouvelle. l'exception qui sera levé dans le bloc try n'est pas forcément l'impossibilité de se connecter au "robot" !

  10. #10
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Octobre 2003
    Messages
    908
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 908
    Par défaut
    Je suis d'acord avec toi .

    Mais quel est l'interet de faire un try except si ce n'est que pour faire un raise ?

    Autant ne pas mettre de raise.


    Aprés je suis totalement d'acord que je cache une exception pour en construire une nouvelle, mais je ne voudrais pas rentrer dans un débat sur ce point là, car ce n'est pas le but de mon post.

  11. #11
    Rédacteur
    Avatar de evarisnea
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2005
    Messages
    1 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 957
    Par défaut
    Citation Envoyé par rvzip64 Voir le message
    Je suis d'acord avec toi .

    Mais quel est l'interet de faire un try except si ce n'est que pour faire un raise ?

    Autant ne pas mettre de raise.
    pas de raise et pas de bloc try except du tout, c'est vrai. mais je pense que le code n'est qu'illustratif, et qu'en réalité il y aura des instructions avant le raise. l'intérêt peut être de libérer certaines ressources, ou effectuer quelques manipulations avant de propager l'exception dans le code ayant appelé la méthode dans laquelle l'exception a été levée par exemple.

    Citation Envoyé par rvzip64 Voir le message
    Aprés je suis totalement d'acord que je cache une exception pour en construire une nouvelle, mais je ne voudrais pas rentrer dans un débat sur ce point là, car ce n'est pas le but de mon post.
    Ok

  12. #12
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Octobre 2003
    Messages
    908
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 908
    Par défaut
    Bon en tout cas je continu a regarder mon code pour savoir pourquoi il ne me déclanche pas tout le temps une exception

    Merci de ton aide evarisnea

  13. #13
    Rédacteur
    Avatar de evarisnea
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2005
    Messages
    1 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 957
    Par défaut
    ps: si tu peux reproduire le problème dans un petit projet que tu postera cela nous permettrait de mieux t'aider.

  14. #14
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Octobre 2003
    Messages
    908
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 908
    Par défaut
    C'est exactement ce que j'essaye de faire

Discussions similaires

  1. utiliser les tag [MFC] [Win32] [.NET] [C++/CLI]
    Par hiko-seijuro dans le forum Visual C++
    Réponses: 8
    Dernier message: 08/06/2005, 15h57
  2. Réponses: 4
    Dernier message: 05/06/2002, 14h35
  3. utilisation du meta type ANY
    Par Anonymous dans le forum CORBA
    Réponses: 1
    Dernier message: 15/04/2002, 12h36
  4. [BCB5] Utilisation des Ressources (.res)
    Par Vince78 dans le forum C++Builder
    Réponses: 2
    Dernier message: 04/04/2002, 16h01
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

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