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 :

try / except, comment intercepter ?


Sujet :

Langage Delphi

  1. #1
    Membre éclairé Avatar de peter27x
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 029
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 029
    Points : 757
    Points
    757
    Par défaut try / except, comment intercepter ?
    Bonjour,

    j'ai codé ça pour me connecter au port COM, avec la librairie (propriétaire) adPort:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
      try
        Configure(portNumber)
      except
        on eBadId do
        begin
          showMessage('Port indisponible !');
          exit;
        end;
      end;

    Si le port existe, ça marche, sinon j'ai le message suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "ie_BadId - Specified comport doesn't exist"
    Par le debuggeur, j'ai un message qui me donne le nom de l'exception, c'est "EBadId".

    Par le debuggeur toujours, j'arrive à l'endroit d'où part ce message (dans module propriétaire adExcept):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    function CheckException(const Ctl : TComponent; const Res : Integer) : Integer;
        {-Check Res, raise appropriate exception if non-zero}
      var
        ErrorMsg : String;
        FileIO   : EInOutError;
     
      begin
        Result := Res;
        if (Res < ecOk) then
          if not (csLoading in Ctl.ComponentState) then begin
            case Res of
    (...)
               ecBadId : raise EBadId.Create(Res, False);
    (...)

    Question, comment faire pour avoir "mon" message (vu que j'ai bien mis try / except) et non le message par défaut ?

    Merci.

  2. #2
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut

    Citation Envoyé par peter27x Voir le message
    Question, comment faire pour avoir "mon" message (vu que j'ai bien mis try / except) et non le message par défaut ?
    Tu obtiens ce message par "défaut" lorsque tu lances ton exécutable via Delphi soit en mode débogage.
    Lance ton exécutable directement, hors Delphi, et seul ton message perso apparaitra.

    A savoir que tu peux également demander au débogeur d'ignorer ce type d'exception EBadId.

    @+ Claudius

  3. #3
    Membre éclairé Avatar de peter27x
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 029
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 029
    Points : 757
    Points
    757
    Par défaut
    Citation Envoyé par Cl@udius Voir le message
    Salut



    Tu obtiens ce message par "défaut" lorsque tu lances ton exécutable via Delphi soit en mode débogage.
    Lance ton exécutable directement, hors Delphi, et seul ton message perso apparaitra.

    A savoir que tu peux également demander au débogeur d'ignorer ce type d'exception EBadId.

    @+ Claudius

    Merci Claudius, en fait je m'étais trompé de responsable, ce n'était pas la fonction configure() mais juste après, l'affectation "true" à FPort.Open... du coup j'ai mis mon try expect dessus, et en effet, en passant par l'exe directement, j'ai bien mon message.

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

Discussions similaires

  1. Réponses: 10
    Dernier message: 13/01/2012, 09h22
  2. Comment utiliser (try..except) ?
    Par moukah2 dans le forum Débuter
    Réponses: 3
    Dernier message: 21/12/2007, 12h03
  3. [Exceptions] Comment afficher le numéro de la ligne ?
    Par hpalpha dans le forum Langage
    Réponses: 2
    Dernier message: 09/12/2004, 09h58
  4. Réponses: 2
    Dernier message: 28/08/2003, 00h00

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