Completablefuture.supplyAsync中使用try{}catch{}之后whenComplete还能捕获到异常吗
时间: 2024-04-29 08:21:25 浏览: 186
`CompletableFuture.supplyAsync()` 方法中使用 `try{}catch{}` 语句捕获异常后,当任务执行完成时,`whenComplete()` 方法仍然可以捕获到异常。这是因为 `CompletableFuture` 内部会保存异常信息,并在任务执行完成后将其传递给 `whenComplete()` 方法。
下面是一个示例代码:
```java
CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> {
try {
// do something that may throw exception
return "result";
} catch (Exception e) {
throw new RuntimeException(e);
}
});
future.whenComplete((res, ex) -> {
if (ex != null) {
System.out.println("Exception occurred: " + ex.getMessage());
} else {
System.out.println("Result: " + res);
}
});
```
在这个示例中,`supplyAsync()` 方法中使用 `try{}catch{}` 捕获了异常。当任务执行完成后,`whenComplete()` 方法可以捕获到异常并输出异常信息。如果没有异常发生,则输出任务的结果。
阅读全文