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

UML Discussion :

Modéliser les exceptionsavec UML


Sujet :

UML

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 21
    Points : 13
    Points
    13
    Par défaut Modéliser les exceptionsavec UML
    Bonjour à tous

    Je n'ai pas trés bien compris la sémentique du composant "Exception Handler"
    du diagramme d'activité d'ML (surtout le principe de propagation du traitement de l'exception...). Pourriez vous me donner un petit exemple là dessus ?

    Merci

  2. #2
    Modérateur
    Avatar de bruno_pages
    Homme Profil pro
    ingénieur informaticien à la retraite
    Inscrit en
    Juin 2005
    Messages
    3 533
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : ingénieur informaticien à la retraite
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 3 533
    Points : 6 709
    Points
    6 709
    Par défaut
    A la base il n'y a rien de particulier dans la propagation d'une exception en UML, il se passe la même chose que lorsqu'il y a une exception dans un programme C++ Java etc ...

    dans un langage comme Java ou C++ l'exception interrompt l'exécution du bout de code courant, et on donne la main au dernier catch imbriqué traitant l'exception.

    en UML, si l'exception arrive dans une action, le déroulement de l'action est interrompu, si cette action à un handler pour l'exception ce dernier est exécuté, sinon on regarde dans le conteneur de l'action ou appelant (si possible c.a.d. si appel synchrone), si celui-ci n'a pas de handler correspondant on regarde un cran plus loin etc ... c'est comme la 'recherche' du catch C++/Java

    il y a aussi des facilités comme les régions interruptibles pour éviter d'avoir des diagrammes illisibles ou on écrit une seule fois ce qui se passe pour chaque exception pour tout ce qui est dans la région (évidemment il faut que le traitement de chaque exception soit le même pour tous)
    Bruno Pagès, auteur de Bouml (freeware), mes tutoriels sur DVP (vieux, non à jour )

    N'oubliez pas de consulter les FAQ UML et les cours et tutoriels UML

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 21
    Points : 13
    Points
    13
    Par défaut
    Bonjour

    Merci bruno_pages pour cette réponse.


    J'aimerais avoir un petit éclaircissement sur un point:
    Pour reprendre votre explication:

    en UML, si l'exception arrive dans une action, le déroulement de l'action est interrompu, si cette action à un handler pour l'exception ce dernier est exécuté, sinon on regarde dans le conteneur de l'action ou appelant (si possible c.a.d. si appel synchrone), si celui-ci n'a pas de handler correspondant on regarde un cran plus loin etc

    On regarde si le conteneur de l'action (qui soulevé l'exception) à un handler correspondant si l'action qui a soulevé l'exception n'est pas protégée. Que se passe t il si l’action est dite protégée et qu’un handler n’est pas trouvé ?

    Dans le cas ou l’activité n’est pas protégée : si le conteneur n'a pas de handler correspondant ,est ce qu'il y a arrêt de ce niveau lorsqu'on recherche le handler dans le niveau plus haut (l’activité l’englobant), c'est à dire lorsqu'on essaye de voir à chaque fois plus loin pour trouver un handler, est ce qu'il y a pour chaque niveau visité (ou est propagé l'exception) arrêt de l'exécution du niveau en question et lorsqu'on reprend l'exécution après avoir trouvé le handler correspondant, est ce la reprise se fait au niveau du dernier niveau où le handler à été trouvé ou bien en retourne au niveau de l’activité où l'exception à été levée.



    J'aurais également une autre question qui n' a pas vraiment un rapport avec le titre du sujet:
    Je n'ai pas compris la différence entre l'exécution d'une région d'expansion en mode "itératif" et en mode "stream" ? Est ce qu'il y a plusieurs exécution de la région dans le deuxième cas ou pas ?

    Merci

  4. #4
    Modérateur
    Avatar de bruno_pages
    Homme Profil pro
    ingénieur informaticien à la retraite
    Inscrit en
    Juin 2005
    Messages
    3 533
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : ingénieur informaticien à la retraite
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 3 533
    Points : 6 709
    Points
    6 709
    Par défaut
    Bonjour
    Citation Envoyé par Lyna77 Voir le message
    Que se passe t il si l’action est dite protégée et qu’un handler n’est pas trouvé ?
    je ne comprends pas la question car protection == handler_présent

    Citation Envoyé par Lyna77 Voir le message
    ... est ce la reprise se fait au niveau du dernier niveau où le handler à été trouvé ou bien en retourne au niveau de l’activité où l'exception à été levée.
    la reprise se fait au niveau où se trouve le handler, exactement comme en C++/Java

    par exemple le prog C++ suivant :
    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
    #include <stdio.h>
    
    void g()
    {
      puts("g / affiche");
      throw 0;
      puts("g / pas affiche");
    }
    
    void f()
    {
      puts("f / affiche");
      try {
        puts("f / affiche aussi");
        g();
        puts("f / pas affiche");
      }
      catch(int) {
        puts("f / handler");
      }
      
      puts("f / reprise apres handler");
    }
    
    int main(int argc, char ** argv)
    {
      puts("appel f");
      f();
      puts("apres f");
    }
    fera les affichages suivants :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    appel f
    f / affiche
    f / affiche aussi
    g / affiche
    f / handler
    f / reprise apres handler
    apres f
    un équivalent had oc via des activités serait :







    Citation Envoyé par Lyna77 Voir le message
    Je n'ai pas compris la différence entre l'exécution d'une région d'expansion en mode "itératif" et en mode "stream" ? Est ce qu'il y a plusieurs exécution de la région dans le deuxième cas ou pas ?
    une seule execution, c'est écrit explicitement dans la norme
    mais c'est bizarre ...

    Bruno
    Bruno Pagès, auteur de Bouml (freeware), mes tutoriels sur DVP (vieux, non à jour )

    N'oubliez pas de consulter les FAQ UML et les cours et tutoriels UML

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 21
    Points : 13
    Points
    13
    Par défaut
    Bonjour,

    Merci pour ces explications !

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

Discussions similaires

  1. [MCT] (Quand) faut-il modéliser les traitements ?
    Par pepelele dans le forum Merise
    Réponses: 3
    Dernier message: 01/05/2007, 23h05
  2. [MCD] Comment modéliser les réservations d'un hôtel ?
    Par agruet dans le forum Schéma
    Réponses: 1
    Dernier message: 02/10/2006, 13h29
  3. Réponses: 5
    Dernier message: 07/07/2006, 06h43
  4. [Base de donnée]modéliser uneBD en UML
    Par Nakshi dans le forum Diagrammes de Classes
    Réponses: 4
    Dernier message: 02/08/2004, 11h11

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