CompletableFuture.exceptionally() 方法进行异常处理
时间: 2023-10-18 08:26:19 浏览: 166
Java组合式异步编程CompletableFuture.pdf
是的,CompletableFuture.exceptionally() 方法可以用于处理异步调用过程中产生的异常情况。这个方法会返回一个新的 CompletableFuture 对象,它会接收原始 CompletableFuture 对象的结果或异常。如果原始 CompletableFuture 对象抛出了异常,那么异常会被传递给 exceptionally() 方法,并在该方法中进行处理。
下面是一个示例代码,演示了如何使用 exceptionally() 方法处理异步调用过程中的异常情况:
```java
CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> {
// 调用接口,可能会抛出异常
if (Math.random() > 0.5) {
throw new RuntimeException("接口调用失败");
}
return "result";
});
// 处理异常情况
future.exceptionally(ex -> {
System.out.println("接口调用出现异常:" + ex.getMessage());
return "default value";
});
// 等待异步调用完成,获取结果
String result = future.join();
System.out.println("接口调用结果:" + result);
```
在这个例子中,我们使用 supplyAsync() 方法创建了一个 CompletableFuture 对象,模拟了一次接口调用。这个接口调用有 50% 的概率会抛出异常。在 exceptionally() 方法中,我们打印了异常信息,并返回了一个默认值。最后,我们使用 join() 方法等待异步调用完成,获取结果,并打印了结果。
需要注意的是,exceptionally() 方法会返回一个新的 CompletableFuture 对象,而不是修改原始 CompletableFuture 对象的状态。因此,在使用 exceptionally() 方法后,我们仍然需要使用原始 CompletableFuture 对象的 join() 方法等待异步调用完成并获取结果。
阅读全文