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 :

Résister a une exception


Sujet :

Langage Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 210
    Par défaut Résister a une exception
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
      try
        tabU := TUTable.Create( symbolList_1m );
      except
        on EAccessViolation do begin
            symbolList_1m.Clear();
            Reset(fut);
            addSymbols( fut, symbolList_1m );
            tabU := TUTable.Create( symbolList_1m );
        end;
      end;
    Et malgre cela, l'exception est quand meme levee... vous avez une idee?

  2. #2
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 124
    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 124
    Par défaut
    Est le bon type d'excpetion ?
    on ignore ce qu'est symbolList, TUTable ...

    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
    19
    20
    21
    22
     
    try
      try
        Mark := 1;
        tabU := TUTable.Create( symbolList_1m );
      except
        on EAccessViolation do begin
            Mark := 2;
            symbolList_1m.Clear();
            Mark := 3;
            Reset(fut);
            Mark := 4;
            addSymbols( fut, symbolList_1m );
            Mark := 5;
            tabU := TUTable.Create( symbolList_1m );
        end;
      end;
    except
      on E: Exception do begin
          ShowMessage(Format('%s : %s [%d]', [E.ClassName, E.Message, Mark]);
      end;
    end;
    déjà faut voir le truc simple, qui pourquoi comment, ensuite tu rajoute chaque ligne, et tu vérifie
    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 éclairé Avatar de Dirk-Pitt
    Inscrit en
    Juillet 2007
    Messages
    71
    Détails du profil
    Informations personnelles :
    Âge : 65

    Informations forums :
    Inscription : Juillet 2007
    Messages : 71
    Par défaut
    Cela peut être également une exception qui claque dans le gestionnaire d'exception.

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Février 2006
    Messages
    624
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 624
    Par défaut
    L'instruction "raise;" déclarée dans la clause except permet de redéclencher l'exception.
    Pour lever les exceptions il faut déclarer les plus spécialisées en premier.

  5. #5
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 124
    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 124
    Par défaut
    Merci Fabrice, mais il n'a pas de raise dans son code, donc c'est qu'il a une exception dans son TUTable.Create qui arrive quoi qu'il arrive ...
    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

  6. #6
    Membre éclairé Avatar de Dirk-Pitt
    Inscrit en
    Juillet 2007
    Messages
    71
    Détails du profil
    Informations personnelles :
    Âge : 65

    Informations forums :
    Inscription : Juillet 2007
    Messages : 71
    Par défaut
    Cela dit ... je me suis sans doute mal exprimé. Je voulais dire une exception générée par le code de traitement de la première exception.

  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

    Citation Envoyé par Art19
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
      try
        tabU := TUTable.Create( symbolList_1m );
      except
        on EAccessViolation do begin
            symbolList_1m.Clear();
            Reset(fut);
            addSymbols( fut, symbolList_1m );
            tabU := TUTable.Create( symbolList_1m );
        end;
      end;
    Et malgre cela, l'exception est quand meme levee... vous avez une idee?
    l'exception levée est elle bien de type EAccessViolation ?
    exécute aussi en pas à pas et pas à pas approfondi pour vérifier à quel niveau se produit l'exception.

  8. #8
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 942
    Billets dans le blog
    6
    Par défaut
    supposons une violation d'accès due au passage de symbolList_1m mal (pas) initialisé : l'appel à symbolList_1m.Clear dans la clause Except ne manquerait pas d'en causer une nouvelle...
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 210
    Par défaut
    c'est bien une EAccessViolation mais j'ai change mon code donc maintenant c'est bon. Juste une question: il n'y a pas une option pour valider les trys sous delphi 7?

  10. #10
    Membre Expert
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Par défaut
    Heuuu questiuon bete : Tu as pensé a desactiver l'option dans les outils de debogages ?

    Sinon Delphi arrete l'execution systematiquement des qu'une exception est levee, interceptee ou non.

    Execute le de maniere autonome et non via Delphi elle devrais passer.

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 210
    Par défaut
    voila, c'est ce dont je parlais. ok merci

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

Discussions similaires

  1. error 80020009 une exception s'est produite
    Par Riouxe21 dans le forum ASP
    Réponses: 6
    Dernier message: 21/12/2004, 12h01
  2. erreur :"une exception s'est produite"
    Par leborg dans le forum ASP
    Réponses: 11
    Dernier message: 02/03/2004, 16h09
  3. [JSP] Affichage numéro de ligne d'une exception
    Par PhoneKilleR dans le forum Servlets/JSP
    Réponses: 12
    Dernier message: 23/09/2003, 15h59
  4. Réponses: 2
    Dernier message: 28/08/2003, 01h00
  5. Réponses: 3
    Dernier message: 01/11/2002, 15h30

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