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

avec Java Discussion :

Design et gestion d'erreur


Sujet :

avec Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2004
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 22
    Points : 29
    Points
    29
    Par défaut Design et gestion d'erreur
    Bonjour,
    Je me pose une question de conception.

    J'ai une application avec une interface graphique et un modèle derrière.

    Pour faire simple disons que je gère une série d’événement (qui ont une date et un type).
    Mon interface graphique permet à l'utilisateur d'ajouter des événements.

    Un évènement peut ne pas être ajouter au modèle pour différentes raisons().

    Je cherche donc un mécanisme intelligent pour gérer cela

    Voila la conclusion a la quelle je suis arrivé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    //faire un énumération pour les type d'erreur
     
    public enum AddEvenementErreur {
        BEFORE_BEGINNING, AFTER_END, TOO_MANY
    }
     
    faire un exception qui a comme attibut le type d'erreur 
    public  class ModeleException extends Exception{
    private AddEvenementErreur  type;
    ...
    ...
    ...
    }
    et dans mon modèle d'avoir une méthode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public void addEvenement(Evenement E ) throw ModeleException {
    //faire des test pour savoir si on peut ajouter l'événement
    if (test1)  { throw new ModeleException(BEFORE_BEGINNING)  
    if (test2)  { throw new ModeleException (AFTER_END)
    if (test3 ){ throw new ModeleException (TOO_MANY)
     
    //ajouter l événement
    ....
    ....
    ....
    ...
     
    }
    et dans mon UI d'avoir le suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    try{
    addEvenement(e);
     
    } catch (ModeleException e ) {
     
    String error_to_dysplay ;
    if e.type = BEFORE_BEGINNING {error_to_dysplay = "blabla"}
    if e.type = AFTER_END {error_to_dysplay = "testets"}
    if e.type = TOO_MANY {error_to_dysplay = "testets"}
     
    messageDialog.openError(shell,"ERREUR",error_to_dysplay}
     
    }
    Pensez vous que c'est une bonne manière de réglez le problème ?
    Car sur internet on peux trouver des personnes qui disent que les Exception ne sont pas faite pour gérer les entrées des utilisateurs(alors que c'est ce que je fais) mais je ne vois pas de système moins compliqué.

    En vous remerciant.

    Cordialement

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    394
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 394
    Points : 639
    Points
    639
    Par défaut
    Bonjour,

    Je trouve l'utilisation des exceptions tout à fait appropriée, mais j'utiliserais une approche un tout petit peu différente.

    Au lieu d'utiliser un enum comme "flag" pour différencier les erreurs j'utiliserai différentes classes (les phrases sont à adapter) :

    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
     
    public class ModeleException extends Exception{
    }
    public class BeforeBeginingException extends ModeleException{
        public BeforeBeginingException() {
    	super("Impossible d'ajouter un événement avant le début");
        }
    }
    public class  AfterEndException extends ModeleException{
        public AfterEndException() {
    	super("Impossible d'ajouter un événement après la fin");
        }
    }
    public class  TooManyException extends ModeleException{
       public TooManyException() {
    	super("Impossible d'ajouter un événement car il y en a trop");
        }
    }
    Dans le modèle :
    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 addEvenement(Evenement E ) throw ModeleException {
    //faire des test pour savoir si on peut ajouter l'événement
    if (test1) { throw new BeforeBeginingException();}
    if (test2) { throw new AfterEndException ();}
    if (test3 ){ throw new TooManyException ();}
     
    //ajouter l événement
    ....
    ....
    ....
    ...
     
    }
    Et dans l'ihm :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    try{
    addEvenement(e);
    } catch (ModeleException e ) {
    messageDialog.openError(shell,"ERREUR",e.getMessage());
    }
    Ce que je préfère avec cette méthode est que si tu ajoutes une nouvelle exception dans ton modèle tu n'a pas besoin d'aller modifier la vue. Avec ta méthode si tu rajoutes un nouveau cas à ton enum, tu dois aller dans la vue pour rajouter un if...

    Romain.

Discussions similaires

  1. Design et gestion d'erreurs
    Par dev.go dans le forum Débuter avec Java
    Réponses: 6
    Dernier message: 05/12/2012, 15h53
  2. gestion d'erreur et de transactions....
    Par Dge dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 08/02/2006, 22h20
  3. [XSLT]Est ce qu'il y'a la gestion des erreur en xslt ?
    Par miloud dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 04/02/2004, 17h19
  4. [LG]tests pour la gestion d'erreur
    Par le 27 dans le forum Langage
    Réponses: 3
    Dernier message: 22/12/2003, 20h44
  5. [LG]gestion des erreurs
    Par frontin dans le forum Langage
    Réponses: 3
    Dernier message: 29/11/2003, 22h41

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