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

Interfaces Graphiques en Java Discussion :

Remonter une exception de la méthode Run() ?


Sujet :

Interfaces Graphiques en Java

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 5
    Points : 5
    Points
    5
    Par défaut Remonter une exception de la méthode Run() ?
    Bonjour,
    je développe une application bluetooth client/serveur qui me force à utiliser des threads pour l'exécution de certaines méthodes du package javax.bluetooth. En fait j'ai une classe serveur qui implémente l'interface Runnable.
    Dans la méthode Run() j'exécute des méthodes qui me revoient des exceptions, or je ne trouve aucun moyen pour transmettre ces exceptions à mon interface graphique. En effet la méthode Run() ne supporte pas throws exception.
    Avez-vous une solution?
    Merci beaucoup.

  2. #2
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Points : 4 314
    Points
    4 314
    Par défaut
    Et bien tu rattrapes ton exception, et tu invoque une méthode spécifique qui signale une exception sur ton interface graphique, et qui effectue l'action appropriée pour que ton programme reste stable (return null, return, levée d'une autre Exception...).

    Tu peux d'ailleurs passer l'exception elle-même en paramètre de la méthode.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    // [...]
    // ici tu es suceptible de lever une exception
    try {
       maMethode();
    } catch (Exception e) {
       monInterfaceGraphique.attentionException(e); 
    }
    // [...]
    Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
    Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
    Mes articles et tutoriaux & Mon blog informatique

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    Effectivement c'est une solution mais j'aurais bien voulu rendre ma classe "dépendante" de son parent car plusieurs GUI utiliseront l'objet.
    Merci pour cette solution.
    Si quelq'un à une autre idée?

  4. #4
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 838
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 838
    Points : 22 846
    Points
    22 846
    Billets dans le blog
    51
    Par défaut
    Cree-toi une interface de gestionnaire d'erreurs (ex : ErrorHandler) que tu passes en parametre de ta methode ou de ta classes et que tu appelles en cas d'exception... apres le gestionnaire concret peut-etre une sortie console, un gestionnaire centralise qui fait du log ou qui gere les affichages centralies, ... ou juste la boite de dialogue parente qui a lance la thread (note : penser SwingUtilities.invokeAndWait() lorsqu'il s'agit de faire apparaitre des boites de dialogues pour les erreurs generees dans d'autres Threads)...

    Un truc du genre (vite tape) :

    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    public interface ErrorHandler {
      public void handleError(Throwable t);
      public void handleError(Throwable t, String message);
      ...
    }
     
    public class MySimpleDialog extends ... implements ErrorHandler {
      /** @inheritDoc
       */
      public void handleError(Throwable t) {
         if (t != null) {
           /** @todo Verify we're in EDT and popup a dialog box directly.  
            * If not in EDT, use SwingUtilities.invokeAndWait() instead.
            */
        }
      }
    }
     
    public class MyConfigurableDialog extends  ... implements ErrorHandler {
       /** Error handler has been changed. 
       */
       public static final String ERROR_HANDLER_PROPERTY = "errorhandler";
     
       /** The error handler.
        */
       private ErrorHandler errorHandler = DefaultGUIErrorHandler.getInstance();
     
       /** Sets the error handler.
        * @param newValue The new value.
        * @see #getErrorHandler
        */
       public void setErrorHandler(ErrorHandler newValue) {
          ErrorHandler oldValue = this.errorHandler 
          this.errorHandler  = newValue;
          firePropertyChange(ERROR_HANDLER_PROPERTY, oldValue, newValue);
       }
     
       /** Gets the error handler.
        * @return A <code>ErrorHandler</code> or <code>null</code>.
        * @see #setErrorHandler
        */
       public ErrorHandler getErrorHandler() {
         return errorHandler;
       }
     
      /** @inheritDoc
       */
       public void handleError(Throwable t) {
           ErrorHandler errorHandler = getErrorHandler();
           if ((errorHandler != null) && (errorHandler != this)) {
              errorHandler.handleError(t);
           }
           else { 
              DefaultGUIErrorHandler.getInstance().handleError(t);
           }
       }
    }
     
    public final class DefaultGUIErrorHandler implements ErrorHandler {
       private static final INSTANCE = new DefaultGUIErrorHandler 
     
       public static DefaultGUIErrorHandler getInstance() {
         return INSTANCE;
       }
     
      /** @inheritDoc
       */
      public void handleError(Throwable t) {
         if (t != null) {
           /** @todo Verify we're in EDT and popup a dialog box directly.  
            * If not in EDT, use SwingUtilities.invokeAndWait() instead.
            */
        }
      }
    }
     
    public class DefaultConsoleErrorHandler implements ErrorHandler {
      /** @inheritDoc
       */
      public void handleError(Throwable t) {
        if (t != null) {
          System.err.println(t);
          t.printStackTrace();
        }
      }
    }
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  5. #5
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Points : 4 314
    Points
    4 314
    Par défaut
    Citation Envoyé par Jonef
    Effectivement c'est une solution mais j'aurais bien voulu rendre ma classe "dépendante" de son parent car plusieurs GUI utiliseront l'objet.
    Merci pour cette solution.
    Si quelq'un à une autre idée?
    La methode de Bouye est certainement meilleure que la mienne
    Cependant, pour répondre à ta question et continuer sur mon idée, il suffit de passer l'interface graphique parente en parametre de la classe. Ainsi, elle devient dépendante de ce paramètre.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    private JFrame monInterfaceGraphique;
     
    public void setMonInterfaceGraphique(JFrame interfaceGraphique) {
       this.monInterfaceGraphique = interfaceGraphique;
    }
     
    // Code de mon precedent post
    Juste une petite précision... Pour programmer proprement, il est bien que les classes métier soient indépendantes de l'interface graphique. Donc le code ci-dessus n'est en général pas posé sur la classe métier mais sur un controlleur intermédiaire qui fait le lien entre ta classe métier et ton interface graphique.
    Pour avoir plus de détails sur l'implémentation, je t'invite à te renseigner sur le modèle de programmation PAC.
    Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
    Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
    Mes articles et tutoriaux & Mon blog informatique

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    Ok!
    Merci bien à vous deux!

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

Discussions similaires

  1. [SOAP] Remonter une exception au client
    Par TekP@f dans le forum Services Web
    Réponses: 1
    Dernier message: 24/02/2009, 11h59
  2. Remontée d'une exception
    Par le_duche dans le forum C++
    Réponses: 4
    Dernier message: 11/04/2008, 11h04
  3. Remonter une exception (SOAP)
    Par yazman dans le forum Services Web
    Réponses: 4
    Dernier message: 04/12/2007, 17h22
  4. remonter une exception
    Par robocop2776 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 09/01/2007, 12h44
  5. Réponses: 2
    Dernier message: 28/08/2003, 01h00

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