java - 为什么 ExecutorService 实例产生的线程会吞下 Java 错误?
问题描述
我认为 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.util.concurrent.FutureTask.report(FutureTask.java:122) 在 java.util.concurrent.FutureTask.get(FutureTask.java:192) 的 java.lang.AssertionError ...
推荐阅读
- wordpress - 按自定义日期提交的 Wordpress 查询
- parent-child - CriteriaBuilder 带有子对象的父多选
- oracle-apex - 通过 oracle Apex 页面运行任何作业时出现“错误:错误 - 服务不可用”
- javascript - 我正在尝试制作一个显示/隐藏样式按钮以在 woocommerce 产品描述中显示一大段文本
- python - text response from get request into a python pandas data frame excluding begin and end lines
- android - How to take a screenshot of current Activity and then share it for all social Media code apply sdk<24
- python-3.x - Unable To Scrape Myntra
- javascript - How to check if element exists after a certain time using Cypress
- c - How do I create a square matrix in the C programming language?
- php - Php Laravel - What's the best way to create a loop with polling external servers?