但是,testCase2不处理异常并引发错误。我是不是漏掉了什么?抱歉,我是新手。
@Test
public void testCase1() throws Exception {
CompletableFuture.supplyAsync(() -> {
if (true) throw new RuntimeException();
return "Promise";
}).exceptionally((ex) -> {
return "Fake Promise";
}).get();
}
@Test
public void testCase2() throws Exception {
CompletableFuture<String> cf = CompletableFuture.supplyAsync(() -> {
if (true) throw new RuntimeException();
return "Promise";
});
cf.exceptionally((ex) -> {
return "Fake Promise";
});
cf.get();
}
但是,testCase2不处理异常
您的TestCase2
确实处理了该异常,您可以添加额外的print
语句来检查该异常。
testcase2
引发异常的原因是代码:
cf.exceptionally((ex) -> {
System.out.println("Fake Promise: " + System.nanoTime());
return "Fake Promise";
})
将返回一个新的completablefuture
但您只是丢弃它,则cf.get
中的变量cf
仍未注册到任何异常处理程序。守则应为:
@Test
public void testCase2() throws Exception {
CompletableFuture<String> cf = CompletableFuture.supplyAsync(() -> {
if (true) throw new RuntimeException();
return "Promise";
});
CompletableFuture<String> handledCf = cf.exceptionally((ex) -> {
return "Fake Promise";
});
return handledCf.get();
}
我有两个不同的CompletableFuture,我喜欢并行运行(每个都有不同的返回类型),然后结合它们的结果: 现在我喜欢把dog.name 我想用 但我在这里很烂。
我有一个相当普遍或独特的要求。例如,我有以下列表:
输出如下:http://imgur.com/a/nu3n6
当我使用完全的未来。allOf()组合javadoc中描述的独立可完成的未来,在提供给该方法的所有未来之后,它不能可靠地完成。例如。: 结果如下: 我希望日志“Joined”和“Completed allOf”写在“Completed f1”和“Completed f2”之后。为了让事情变得更加混乱,阵列中的未来顺序似乎是头等大事。如果我换了台词 到 结果输出更改为: 更糟糕的是,如果我多次运行完
我使用的是SpringBoot和SpringDataJPA,我有一个逻辑,它由3个数据库请求组成,我想并行运行。我想在将来用于此目的。 最后,我需要从5 db查询运行的结果中构建响应对象。 所以我创造了完全未来 那我打算用。与这个未来无关。但我对循环调用有问题。如何重写它以在每个请求中使用callable,我需要从请求中传递值,然后按键排序到map中?
问题内容: 我正在尝试使用以下函数将DIP转换为像素。我尝试了低密度,中密度和高密度仿真器,无论使用哪种仿真器,像素值都与传递给函数的骤降值保持相同。 我到底在这里做错了什么? 问题答案: 这是我自己的错。模拟器基本上是在欺骗系统,并告诉我的应用它的分辨率是xy。根据Android支持屏幕文档,所有操作应做的部分。我需要在正确的文件夹中正确设置资源,以便它不再对我的应用程序说谎。