Bonjour,

Je ne sais pas comment gérer proprement les exceptions dans un SwingWorker. Je vous dis comment je fais et je soumets à vos critiques.

Situation : j'exécute une tâche de fond qui throws ses Exceptions.
Si aucune exception n'est levée pendant l'excécution de la tâche de fond je veux que s'exécute Action1 dans l'EDT, Action2 sinon.
La méthode get() me renvoie les exceptions générées dans doInBackGround() donc je le met en début de la procédure done() avec un bloc try/catch

Ca ressemble à ça:
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
 
class MonSwingWorker extends SwingWorker {
       @Override
       public Object doInBackground() throws Exception {
           // Execution d'une tâche qui fait remonter les exceptions.
           tache();
           return null;
       }
 
       @Override
       protected void done() {
           try {
              // Appelle la méthode get() pour voir si une exception a été levée
              get();
              // Si pas d'exception => Action1 
              Action1;
           } catch (Exception e) {
                  //Exception thrown => Action2
                  Action 2;
           }           
       }
   }
Est-ce là une utilisation correcte du SwingWorker et des Exceptions ?
Merci d'avance pour vos éclaircissments.

Philippe.