我使用静态方法supplyAsync()
来获取CompletableFuture
,并调用其whenComplete()
方法来处理结果和异常。
whenComplete()
接受BiConsumer
作为参数,BiConsumer
的第二个参数是Throwable
。但是我发现我无法在supply()
方法中引发检查异常。如果我这样做了,Idea将显示提示“ 未处理的异常:java.lang.exception ”。
public static void main(String[] args) {
Integer i = 0;
// unhandled exception
CompletableFuture<Integer> future = CompletableFuture.supplyAsync(() -> CompletableTest.getInt(i), executorService);
future.whenComplete((res, e) ->
{
System.out.println("res is " + res);
System.out.println("e is " + e);
});
}
public static Integer getInt(Integer i) throws Exception {
Thread.sleep(3000);
return i + 1;
}
我很困惑,whenComplete()
可以处理已检查的异常,但是我不能抛出它。
是否可以在CompletableFuture
内引发检查异常?