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 :

conseil raise exception


Sujet :

Langage Delphi

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    839
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 839
    Points : 262
    Points
    262
    Par défaut conseil raise exception
    Bonjour,

    Besoin de conseil sur le code suivant:

    Si la condition est vrai est que le "raise Exception.Create" est activé, ou va ensuite le pointeur de programme ?
    Après le "end" du finally ?


    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    try //finally
     
    try //except
     
    if condition=true then raise Exception.Create('Erreur xxxx');
     
    except
     
     on EvariantTypecastError do
        begin
        if ibtransaction1.InTransaction=true then IBTransaction1.Rollback;
        showmessage('Erreur convertion de données ligne');
        end;
     
     on E: Exception do
        begin
        if ibtransaction1.InTransaction=true then IBTransaction1.Rollback;
        showmessage(E.ClassName + ': '+ E.Message);
        end;
     
       else
       begin
       if ibtransaction1.InTransaction=true then IBTransaction1.Rollback;
       end;
     
    end;   //fin except
     
    finally
     
    end; //fin finally
    cordialement

  2. #2
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 387
    Points : 2 999
    Points
    2 999
    Par défaut
    Le raise va envoyer dans le except, passer le code, puis aller dans le finally

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    839
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 839
    Points : 262
    Points
    262
    Par défaut réponse
    Merci pour l'info,

    Donc si j'ai bien compris , la partie "else" qui suit ne sera pas exécutée ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    else
       begin
       if ibtransaction1.InTransaction=true then IBTransaction1.Rollback;
       end;
    A+

  4. #4
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    il compile ton code ?! à quoi se rapporte le ELSE ?
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  5. #5
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 387
    Points : 2 999
    Points
    2 999
    Par défaut
    si c'est EvariantTypecastError qui est déclenchée, le code ne passe pas dans dans le type générique Exception !

    si c'est une exception générique, on passe dans le "on E: Exception do"

    Si vraiment t'as pas de bol, tu passeras dans le "else" mais c'est une situation qui n'arrive jamais.
    A ce point là, amha, le programme est pas loin d'exploser en vol !

  6. #6
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 387
    Points : 2 999
    Points
    2 999
    Par défaut
    Citation Envoyé par Paul TOTH Voir le message
    il compile ton code ?! à quoi se rapporte le ELSE ?
    J'ai eu le même reflexe que toi .
    Mais oui, ça compile

    D'ailleurs, bizarrement:

    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
     
      try
      except
     
        on E: Exception do
        begin
          ShowMessage(E.Message);
        end;
     
        else
        begin
          ShowMessage('au secours');
        end;
     
      end;
    Delphi accepte qu'on mette (ou pas) un ; avant le else

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

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 858
    Points : 11 301
    Points
    11 301
    Billets dans le blog
    6
    Par défaut
    Tiens, je viens d'apprendre ici qu'on pouvait mettre une clause else dans des blocs on Exception.

    Le else ne servira ici à rien puisque une exception est toujours une exception et traitée dans le on E: Exception !
    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 !

Discussions similaires

  1. [PDO] Catcher un raise exception
    Par spike75 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 28/04/2012, 21h46
  2. Récupérer un RAISE EXCEPTION
    Par spike75 dans le forum Requêtes
    Réponses: 2
    Dernier message: 24/04/2012, 15h42
  3. pb :RAISE EXCEPTION
    Par Nimothenicefish dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 12/06/2008, 16h59
  4. Raise Exception avec mysql ?
    Par pop_up dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 27/08/2007, 08h11

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