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

API standards et tierces Java Discussion :

catching des exceptions levées dans l'EDT


Sujet :

API standards et tierces Java

  1. #1
    Modérateur
    Avatar de nouknouk
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    1 655
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 655
    Points : 2 161
    Points
    2 161
    Par défaut catching des exceptions levées dans l'EDT
    Bonjour,

    voilà j'aimerais pouvoir catcher les exceptions qui seraient levées dans l'Event Dispatch Thread (aka. l'EDT de Swing) sans avoir à entourer systématiquement tout les code que je lui fais exécuter par un try / catch.

    Exemple pour comprendre (mon problème réel est plus complexe) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    // ma fonction dans mon thread principal.
     
    // bla bla bla
    EventQueue.invokeLater(new Runnable(){
        public void run() {
            Object nullObject = null;
            System.out.println("Je lève une exception..."+nullObject.toString());
        }
    });
    Bien sûr, si j'entoure mon appel à invokeLater avec un try ... catch, il ne servira à rien puisque c'est pas l'invokeLater executé dans le thread principal qui va générer l'exception, mais l'exécution du Runnable dans l'EDT.

    La solution évidente serait de catcher mon exception directement dans run() en entourant mon bloc "Object nullObjet [...] System.out.println " par un try ... catch.


    Malheureusement dans mon cas, je ne peux pas vraiment me le permettre. Y aurait-il un moyen de récuperer dans mon thread principal une exception levée par l'EDT ?

    Merci d'avance
    Mon projet du moment: BounceBox, un jeu multijoueurs sur Freebox, sur PC et depuis peu sur smartphone/tablette Android.

  2. #2
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    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
    public class TestEDTException {
     
        public static void main(String... args) {
            SwingUtilities.invokeLater(new Runnable() {
     
                @Override
                public void run() {
                    Thread.currentThread().setUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
     
                        @Override
                        public void uncaughtException(Thread t, Throwable e) {
                            System.out.println("quand il y a une exception, je fais ça");
                            System.out.println("au fait, le message de l'exception c'était : " + e.getMessage());
                        }
                    });
                }
            });
     
            /* Maintenant : */
            SwingUtilities.invokeLater(new Runnable() {
     
                @Override
                public void run() {
                    Object nullObject = null;
                    System.out.println("Je lève une exception..." + nullObject.toString());
                }
            });
        }
     
    }
    Si tu veux affecter un handler pour n'importe quel thread (pas que l'EDT), utilise plutôt la méthode static:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Thread.setDefaultUncaughtExceptionHandler(...)

  3. #3
    Modérateur
    Avatar de nouknouk
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    1 655
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 655
    Points : 2 161
    Points
    2 161
    Par défaut
    Arf... j'avais raté ces fonctions dans la doc...

    Merci beaucoup
    Mon projet du moment: BounceBox, un jeu multijoueurs sur Freebox, sur PC et depuis peu sur smartphone/tablette Android.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 19/01/2012, 15h28
  2. Réponses: 3
    Dernier message: 24/02/2011, 14h46
  3. Créer des exceptions personnalisées dans ma classe.
    Par bonagad1 dans le forum VB.NET
    Réponses: 2
    Dernier message: 13/01/2011, 12h09
  4. Gestion des exceptions imbriquée dans des Try et boucle
    Par Droïde Système7 dans le forum Débuter
    Réponses: 7
    Dernier message: 13/01/2010, 18h30
  5. Réponses: 0
    Dernier message: 10/09/2009, 17h48

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