首页 > Java > java教程 > 如何在 SwingWorker 和 Executor 线程中捕获 ArrayIndexOutOfBoundsException?

如何在 SwingWorker 和 Executor 线程中捕获 ArrayIndexOutOfBoundsException?

Patricia Arquette
发布: 2024-12-19 20:08:10
原创
190 人浏览过

How to Catch ArrayIndexOutOfBoundsException in SwingWorker and Executor Threads?

SwingWorker 和 Executor 中 ArrayIndexOutOfBoundsException 的问题

问题描述

使用 Executor 和 SwingWorker 进行多线程操作时,题主遇到了一个 ArrayIndexOutOfBoundsException,但当代码中注释掉会导致异常的语句后,异常却没有再出现。题主希望了解如何捕获这样的异常。

答案

为了捕获 ArrayIndexOutOfBoundsException,可以在 SwingWorker 的 done() 方法中从 Future#get() 中重新抛出该异常。

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

修改后的代码片段

// ...

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

完整代码

完整代码如下:

// ...

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

// ...
登录后复制

使用此修改后,即使未注释掉导致异常的代码,也能捕获到 ArrayIndexOutOfBoundsException。

以上是如何在 SwingWorker 和 Executor 线程中捕获 ArrayIndexOutOfBoundsException?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板