Maison Java javaDidacticiel Comment gérer les exceptions des tâches SwingWorker exécutées par un exécuteur testamentaire ?

Comment gérer les exceptions des tâches SwingWorker exécutées par un exécuteur testamentaire ?

Dec 24, 2024 am 10:58 AM

How to Handle Exceptions from SwingWorker Tasks Executed by an Executor?

Impossible d'obtenir l'exception ArrayIndexOutOfBoundsException de Future et SwingWorker si le thread démarre Executor

Question :

Comment intercepter ArrayIndexOutOfBoundsException ou toute exception d'une tâche SwingWorker exécutée par un Exécuteur ?

Réponse :

En relançant l'exception interceptée depuis la méthode done() du SwingWorker.

Détaillé Explication :

Lors de l'utilisation d'un exécuteur pour démarrer une tâche SwingWorker, la tâche est exécuté sur un thread séparé. Cela signifie que les exceptions levées par la tâche ne seront pas propagées au thread de répartition d'événements (EDT) où SwingWorker est exécuté. Par conséquent, les exceptions non interceptées levées par la tâche seront avalées silencieusement et la méthode done() se terminera normalement.

Pour intercepter et gérer les exceptions levées par la tâche, vous pouvez suivre les étapes suivantes :

  1. Remplacez la méthode done() dans SwingWorker.
  2. Dans la méthode done(), utilisez un bloc try-catch pour intercepter toutes les exceptions qui ont pu être levées. par la tâche.
  3. Relancez l'exception interceptée à l'aide de la classe ExecutionException.

En relançant l'exception à l'aide d'ExecutionException, elle sera propagée à l'EDT et pourra être géré par l'appelant de la méthode get() sur le Future qui a été renvoyé lorsque la tâche a été soumis.

EXEMPLE :

Le code suivant montre comment intercepter et gérer les exceptions levées par une tâche SwingWorker exécutée par un exécuteur en utilisant les étapes décrites ci-dessus :

import java.util.concurrent.Executor;
import java.util.concurrent.Executors;

import javax.swing.SwingWorker;

public class TableWithExecutor {

    private static final Executor executor = Executors.newCachedThreadPool();

    public static void main(String[] args) {
        SwingWorker<Void, Void> worker = new SwingWorker<>() {

            @Override
            protected Void doInBackground() throws Exception {
                // Perform some task that may throw an exception
                ...

                // Re-throw any caught exceptions using ExecutionException
                throw new ExecutionException(new Exception("Error occurred in doInBackground()"), null);
            }

            @Override
            protected void done() {
                try {
                    get(); // Will throw the re-thrown ExecutionException
                } catch (ExecutionException e) {
                    // Handle the exception here
                    e.printStackTrace();
                } catch (InterruptedException e) {
                    // Handle the interruption here
                    e.printStackTrace();
                }
            }
        };

        executor.execute(worker);
    }
}
Copier après la connexion

En suivant ces étapes, vous pouvez intercepter et gérer les exceptions levées par les tâches SwingWorker exécutées par un exécuteur, en vous assurant que les exceptions non interceptées ne disparaissent pas. silencieusement inaperçu.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Vous avez un jeu croisé?
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)