java - 如何处理来自 Callable<Void> 的异常

标签 java java.util.concurrent

我想知道当我使用 Void 作为返回类型时如何处理 Callable 中的异常。

类似这样的事情:

ExecutorService executor = Executors.newSingleThreadExecutor();
executor.submit(new Callable<Void>() {

        @Override
        public Void call() throws Exception {
            call a third party code where an exception is thrown...
            return null;
        }

});

由于我不需要此可调用的任何结果,因此我不会在调用 executor.submit() 返回的 Future 上调用 get() 。因此异常被吞掉了。

处理此类异常的正确方法是什么?

最佳答案

在你的 call() 方法中 try/catch 怎么样? - 我想这取决于发生异常时你想做什么。

public Void call() throws Exception {
    try {
        ThirdParty.doSomething();
    } catch(SomeTypeException e) {
        SomeErrorHandler.handleThisError(e); // E.g. report it to the user
    }
    return null;
}

关于java - 如何处理来自 Callable<Void> 的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25054759/

相关文章:

java - java.util.concurrent.LinkedBlockingQueue 中的奇怪代码

java - Artifactory/JFrog 在生成的 POM 中生成错误的父 artifactId

java - 为什么模数不能帮助找到负奇数?

java - 使用 Java 进行模板处理

java - Java中从RGB到HSV(Color.RGBtoHSB)返回不同的结果

java - ConcurrentHashMap 中的活锁

java - 从命令行编译一个 eclipse GWT 项目,没有 eclipse : compile error

java - ExecuterService 停止处理两个线程中的一个

java - 在方法的本地范围内创建的 ReentrantLock 对象将如何工作?

java - 等待另一个线程做某事