Heim >Java >javaLernprogramm >Wie fängt man ArrayIndexOutOfBoundsException in SwingWorker- und Executor-Threads ab?

Wie fängt man ArrayIndexOutOfBoundsException in SwingWorker- und Executor-Threads ab?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-19 20:08:10173Durchsuche

How to Catch ArrayIndexOutOfBoundsException in SwingWorker and Executor Threads?

Problem mit ArrayIndexOutOfBoundsException in SwingWorker und Executor

Problembeschreibung

Verwendung von Executor und SwingWorker Beim Durchführen von Multithread-Vorgängen ist das Subjekt auf eine ArrayIndexOutOfBoundsException gestoßen, aber nach dem Auskommentieren der Anweisungen, die die Ausnahme im Code verursachen würden, ist die Ausnahme nicht erneut aufgetreten. Der Fragesteller möchte wissen, wie man eine solche Ausnahme abfängt.

Antwort

Um ArrayIndexOutOfBoundsException abzufangen, können Sie die Ausnahme von Future#get() in der done()-Methode von SwingWorker erneut auslösen.

@Override
protected void done() {
    try {
        get();
    } catch (InterruptedException | ExecutionException ie) {
        ie.printStackTrace();
    } catch (IllegalStateException is) {
        is.printStackTrace();
    }
}

Geänderter Codeausschnitt

// ...

@Override
protected void done() {
    if (str.equals("StartShedule")) {
        try {
            get();
        } catch (InterruptedException | ExecutionException ie) {
            ie.printStackTrace();
        } catch (IllegalStateException is) {
            is.printStackTrace();
        }
    }
}

Vollständiger Code

Der vollständige Code lautet wie folgt:

// ...

@Override
protected void done() {
    if (str.equals("StartShedule")) {
        try {
            get();
        } catch (InterruptedException | ExecutionException ie) {
            ie.printStackTrace();
        } catch (IllegalStateException is) {
            is.printStackTrace();
        }
    }
}

// ...

Nach Verwendung dieser Änderung kann der Code, der die Ausnahme verursacht, erfasst werden, auch wenn er nicht auskommentiert ist. ArrayIndexOutOfBoundsException.

Das obige ist der detaillierte Inhalt vonWie fängt man ArrayIndexOutOfBoundsException in SwingWorker- und Executor-Threads ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn