CompletableFuture如何处理异常?
时间: 2024-04-20 17:20:38 浏览: 508
CompletableFuture是Java 8引入的一个异步编程工具,它可以用于处理异步任务的结果。在CompletableFuture中,可以使用exceptionally()方法来处理异常。
当CompletableFuture中的任务发生异常时,可以通过调用exceptionally()方法来处理异常情况。该方法接受一个Function参数,该参数会在任务发生异常时被调用,并返回一个新的CompletableFuture对象,用于处理异常情况。
下面是处理异常的示例代码:
```java
CompletableFuture<Integer> future = CompletableFuture.supplyAsync(() -> {
// 异步任务
throw new RuntimeException("Exception occurred");
});
CompletableFuture<Integer> result = future.exceptionally(ex -> {
// 异常处理逻辑
System.out.println("Exception occurred: " + ex.getMessage());
return 0; // 返回默认值
});
result.thenAccept(value -> {
// 处理正常结果
System.out.println("Result: " + value);
});
```
在上述代码中,我们使用supplyAsync()方法创建了一个CompletableFuture对象,该对象表示一个异步任务。在任务中,我们抛出了一个RuntimeException。
然后,我们调用exceptionally()方法来处理异常情况。在exceptionally()方法中,我们定义了一个处理异常的逻辑,打印异常信息,并返回一个默认值0。
最后,我们通过thenAccept()方法来处理正常结果。在这个例子中,由于任务发生了异常,所以最终输出的结果是默认值0。
阅读全文
相关推荐
![-](https://img-home.csdnimg.cn/images/20250102104920.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231044833.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)