在javadocs中,
AllOf()
如果任何给定的CompletableFutures完成异常,则 返回的CompletableFuture也这样做, 将此异常作为其原因的CompletionException。
AnyOf()
如果异常完成,则返回的CompletableFuture也将 这样做,通过CompletionException持有此异常作为其 原因。
这是否意味着当CompletableFuture中的任何一个抛出异常时,allOf()和anyOf()的行为方式都相同?
问题在于短语
返回CompletableFuture也是如此
在这两种方法中均出现,而没有明确提及何时发生异常。
答案 0 :(得分:2)
不完全是。 anyOf
给出要完成的任何期货的结果,无论是否异常。 allOf
在所有通过的期货(包括异常完成的期货)完成之前不会完成。如果任何期货异常完成,则结果中会反映出第一个例外。
基本上,anyOf
的异常将始终来自已完成的未来,而allOf
的异常可能源自任何未来。