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 Java Discussion :

MVC et Exception


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 57
    Par défaut MVC et Exception
    Bonjour,

    J'ai une application graphique, et j'aimerais afficher une boite de dialogue lorsque qu'une exception est levée.

    Mais je ne vois pas comment faire pour centraliser cette gestion (au sein de mon contrôleur par exemple).

    Avez vous des exemples de code pour ceci?

    Merci d'avance

    Mayeu

  2. #2
    Membre Expert
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Par défaut
    Ce qui marche bien sur cette question :
    • Si c'est une exception que l'utilisateur peut générer à la suite de ses manipulations, IL FAUT centraliser cette gestion, par les règles du MVC classique. (enfin... celles que tu auras choisies d'appliquer...)
    • Si c'est une exception suite à un bug, IL NE FAUT PAS la centraliser, mais en faire direct le log, la trace, et, éventuellement, afficher un avertissement sauvage à l'utilisateur, ne serait-ce que pour lui dire qu'il y a quelque chose qui déconne et qu'il serait bien gentil d'envoyer le fichier de log aux concepteurs...

    Dans tous les cas, il faut se récupérer correctement, et de façon adéquate, quand au fonctionnement.

  3. #3
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 57
    Par défaut
    Citation Envoyé par gifffftane Voir le message
    Si c'est une exception que l'utilisateur peut générer à la suite de ses manipulations, IL FAUT centraliser cette gestion, par les règles du MVC classique. (enfin... celles que tu auras choisies d'appliquer...)
    Voila c'est celle là qu'il faut que je traite, le probléme est que je n'est aucune idée des méthodes à implementer dans mon controleur, de l'interface à utilisé etc..

    Car en cours nous n'avons pas vu la gestion des exception dans le MVC :/ (je n'ai pas fait une filière info, ce qui explique cela) et j'ai chercher dans les tutos de developpez, mais je n'ai rien trouvé d'interessant!

    Aurais-tu un exemple basique que je puisse ensuite adapté?

    Merci d'avance.

  4. #4
    Membre Expert
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Par défaut
    À ma connaissance il n'y a rien de spécifique aux erreurs dans le modèle MVC, c'est à dire qu'elles se traitent exactement comme le reste.

    On peut distinguer les erreurs de saisie (une lettre dans un numéro de code postal, par ex), que l'on essaie de traiter directement dans le V, des erreurs qui nécessitent un traitement plus complexe pour les découvrir, par exemple la commande d'un produit catalogue inexistant. Mais ça c'est pas MVC, c'est ta sauce à toi.

    Il y a aussi la façon d'afficher les erreurs, par boite de dialogue, ou par simple information dans un JLabel de la fenêtre.

    Et puis aussi l'approche d'éviter les erreurs ; par exemple, si tu présentes à l'utilisateur un choix dans la liste des départements, au lieu de lui en faire entrer un dans un champ de saisie, alors il n'y aura plus aucun risque d'erreur... donc plus de traitement d'erreur !

    La gestion des erreurs utilisateur est un domaine complexe, mais cela vient avec la pratique.

    Je n'ai pas d'exemple typique, juste quelques pistes de réflexions qui pourront peut être t'aider ?

  5. #5
    Membre Expert
    Avatar de fabszn
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2002
    Messages
    974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2002
    Messages : 974
    Par défaut
    Hello,

    Pour répondre à ta question, il faut que tu créé tes propres classes d'exception correspondantes aux erreurs que l'utilisateur sera succeptible de faire.
    Ces erreurs peuvent effectivemnt être détectées à différents niveaux du modèle MVC.

    Si une erreur utilisateur est détectée au niveau du Modèle, alors il faut que tu fasses remonter l'exception proprement jusqu'a ta couche de présentation (V).

    Voila un exmple d'une erreur détectée au niveau de la couche modèle et remontée jusqu'à la couche présentation.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     
    public void methodeModèle() throws MyModeleException{
    .....
    if(unTestDeVerification){
    //Test correct
    }else{
    //Test incorrect alors tu lances une exception
    throw new MyModeleException("une erreur c'est produite sur le test unTestDeVerification");
     
    }
    .....
     
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public void methodeControleur() throws MyControleurException{
    .....
     
    try{
    monObjetModele.modèleMethode();
    }catch(MyModeleException e){
       throw new MyControleurException("Une erreur c'est produite ici");
    }
     
    .....
     
    }

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public void MethodeVue(){
    .....
    
    try{
    monObjetControleur.methodeControleur();
    }catch(MyControleurException e){
       //traitement d'ouverture de la fenetre d'affichage du message d'erreur.
    }
    
    .....
    
    }
    C'est un exemple concis, mais il te permet de voir le mécanisme de remonté des exceptions au travers des couches du modèle MVC.

    J'espère que cela t'aidera!

  6. #6
    Membre expérimenté Avatar de aJavaDeveloper
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    248
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 248
    Par défaut
    Comme cela a déjà été expliqué plus haut, les exceptions doivent être gérées dans la couche la plus haute de ton architecture.

    Toutefois, je crois que ta question n'est pas de savoir où gérer les exceptions mais bien de savoir comment les gérer de façon centralisée :

    Mais je ne vois pas comment faire pour centraliser cette gestion (au sein de mon contrôleur par exemple).
    La gestion des exceptions fait partie des cross-cutting problems.
    Ces problèmes peuvent être très facilement résolus par la programmation orientée aspects (AOP).
    Ce type de programmation permet d'injecter du code, de manière transparente, à certains endroits d'une application.
    Dans ton cas, il te suffit d'utiliser la programmation orientée aspects pour injecter du code après l'exécution de toute méthode ayant lancé une exception et appartenant à une classe de ta couche la plus haute...
    Le code à injecter doit être implémenté dans un aspect, qui n'est en fait qu'une simple classe Java, et est donc centralisé...

    Faire de la programmation orientée aspects implique l'utilisation d'un framework.
    Je te conseille Spring AOP : http://www.springframework.org/docs/reference/aop.html.
    Il s'agit d'un framework dont l'objectif n'est pas d'être complet mais bien d'être simple à utiliser.

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

Discussions similaires

  1. [PHP 5.3] Gestion des erreurs et exceptions et MVC
    Par RunCodePhp dans le forum Langage
    Réponses: 4
    Dernier message: 28/01/2011, 11h42
  2. Exception inconnue dans un programme (modèle MVC, threads)
    Par Larger dans le forum Concurrence et multi-thread
    Réponses: 3
    Dernier message: 06/08/2008, 15h58
  3. Gestion d'exception dans un modèle MVC
    Par Monkey_D.Luffy dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 27/06/2008, 18h28
  4. [Spring MVC] Exception Validator
    Par jamalmoundir dans le forum Spring Web
    Réponses: 5
    Dernier message: 26/06/2007, 14h52

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