gpt4 book ai didi

java - 为什么 Java 错误会被 ExecutorService 实例生成的线程吞噬?

转载 作者:行者123 更新时间:2023-12-03 21:55:12 25 4
gpt4 key购买 nike

我认为 Java 错误是严重问题的迹象,不应该被处理。那么,为什么这段代码可以正常运行?

public static void main(String[] args)
{
ExecutorService executor = Executors.newSingleThreadExecutor();
Future<?> future = executor.submit(() -> {throw new AssertionError();});
while (!future.isDone()) {
}
System.out.println("done");
}

我有一个未实现的方法,它抛出一个 AssertionError 来提醒我去实现它,但它只是被吞没了,完全没有任何迹象表明存在严重错误。

最佳答案

它没有被吞下,它就在那里:

public static void main(String[] args) {
ExecutorService executor = Executors.newSingleThreadExecutor();
Future<?> future = executor.submit(() -> {
throw new AssertionError();
});
while (!future.isDone()) {
}
try {
future.get();
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
}
System.out.println("done");
}

调用 get 方法时出现错误,如果成功则返回计算结果,否则返回错误。

java.util.concurrent.ExecutionException: java.lang.AssertionError at java.util.concurrent.FutureTask.report(FutureTask.java:122) at java.util.concurrent.FutureTask.get(FutureTask.java:192) ...

关于java - 为什么 Java 错误会被 ExecutorService 实例生成的线程吞噬?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52972555/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com