面试题答案
一键面试import java.util.concurrent.CompletableFuture;
public class CompletableFutureExceptionHandling {
public static void main(String[] args) {
CompletableFuture.supplyAsync(() -> {
// 模拟正常计算
return 10;
})
.thenApply(result -> {
// 模拟另一个计算,可能抛出异常
if (result > 5) {
throw new RuntimeException("计算出现异常");
}
return result * 2;
})
.exceptionally(ex -> {
// 处理异常,返回默认值
System.out.println("捕获到异常: " + ex.getMessage());
return -1;
})
.thenAccept(System.out::println);
}
}
在上述代码中:
CompletableFuture.supplyAsync(() -> 10)
开始一个异步任务,返回10
。thenApply(result -> {...})
尝试对结果进行计算,这里模拟了可能抛出异常的情况。exceptionally(ex -> {...})
捕获前面任务抛出的异常,并返回一个默认值-1
。thenAccept(System.out::println)
输出最终结果,无论是正常结果还是异常处理后的默认值。