CompletableFutureがexeceptionally完了どのように見つけますか

ernitingoel:

私はCompletableFutureを使用し、例外処理に疑問を持っています。

検証()、またはプロセスのいずれか()メソッドは、それがexceptionHandlerのによって処理される例外をスローする場合、私は、このようなコードを有しています。しかし、私がスローされた例外がCompletionExceptionに包まれて、このようCompletableFutureを使用していたとき。私はどのように私は確信して私のexceptionHandlerのではなくCompletionExceptionを得るのが呼ばれていることを確認することができます知っているかもしれませんか?

CompletableFuture<Response> response = CompletableFuture
                .supplyAsync(() -> {
                    validationService.validate(request);
                    return myService.process(request, headers);
                });
デッドプール :

呼び出す前get()CompletableFuture呼び出し、この方法isCompletedExceptionally、それは例外で完了した場合、trueを返します

public boolean isCompletedExceptionally()

このCompletableFutureはどのような方法で、非常に完了した場合はtrueを返します。考えられる原因はキャンセル、completeExceptionallyの明示的な呼び出し、およびCompletionStageアクションの突然の終了が含まれます。

いずれかの例外が発生した場合にそのタスクを実行しながら、それは非常に例外を除いて入力引数を実行しますまた、completableFutureのための例外的なブロックを追加することができます

CompletableFuture<String> future = CompletableFuture.supplyAsync(()-> "Success")
                                   .exceptionally(ex->"failed");

上記の例では任意の例外が発生した場合の実行supplyAsync 失敗して戻りますか、他の成功が返されます

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=186155&siteId=1