如何在CompletableFuture中引发一个检查异常?

时间:2018-08-09 04:07:16

标签: java exception-handling java-8 completable-future checked-exceptions

我使用静态方法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内引发检查异常?

0 个答案:

没有答案