1012Close
Pen^2On the 2015-08-25 at 08:48pm
Folco (./10) :
Cette méthode (open()) qui appartient à la couche Données peut tomber sur plusieurs erreurs, alors deux solutions :
-> elle affiche ses dialogues et renvoie false en cas d'échec-> elle renvoie un code d'erreur, à tester pas la couche Application, qui devra afficher le message idoine. Ca nécessite de créer une énumération en plus, de faire un plus ou moins gros switch dans la partie Application. C'est plus propre sur le papier, mais ça complexifie le code.
Elle ne doit pas afficher quoi que ce soit (=> imagine que ta couche métier est soudain utilisée sur un serveur sans personne pour cliquer sur le bouton OK cheeky)

Donc oui il faut générer une erreur. Ou une exception (c'est plus pratique). Et comme ça, la couche présentation n'a pas à connaître outre mesure les erreurs possibles. Elle se contente de rattraper les exceptions et d'en faire ce qu'elle veut.

class FolcoRootException {
getMessage() {...}
}


   doStuff() throws FolcoRootException
  { 
    try {
      if ( randomBool() ) {
          throw new FolcoRootException("valeur non valide, sont autorisées les valeurs min<val<max") ;
      }
       //fait des trucs que seul un kernel peut faire !!
        //...
       //...
    }
    finally {
         notifyAllDataChangedListeners() ;
    }
   }

Le code utilisant doStuff sait qu'il doit gérer les FolcoRootException.

   buttonCallback()
   {
      try {
          kernel.doStuff() ;
      }
      catch ( FolcoRootException fre ) {
           msgbox("err!"+ fre.getMessage()) ;
      }
   }