CompletableFuture 异常
时间: 2024-12-13 14:13:31 浏览: 6
`CompletableFuture` 是 Java 中的一个高级并发工具,它允许开发者以非阻塞的方式处理异步计算结果。当使用 `CompletableFuture` 的方法完成任务时,可能会遇到几种类型的异常:
1. **ExecutionException**: 这是最常见的异常类型,当内部的 Callable 或 Supplier 函数抛出异常时,`CompletableFuture.get()` 或其他阻塞性操作会捕获这个异常并将其封装到 `ExecutionException` 中。这是为了保持异步调用的完整性。
2. **CancelledException**: 当一个 `CompletableFuture` 被取消 (`cancel(true)`) 并且内部任务也响应了取消请求时,会抛出此异常。
3. **TimeoutException**: 如果等待 `CompletableFuture` 完成超出了预设的时间限制,`CompletableFuture.get(long timeout, TimeUnit unit)` 方法将抛出 `TimeoutException`。
4. **InterruptedException**: 如果 `CompletableFuture` 等待线程由于中断而被中断,`Thread.interrupt()` 方法会被调用,这可能导致 `InterruptedException`。
5. **CompletionException**: 如果 `CompletableFuture` 没有直接包含上述异常,而是包装了一个已存在的异常,那么它会抛出 `CompletionException`。
处理 `CompletableFuture` 异常的关键在于正确地设置回调、使用 `handle()` 或 `exceptionally()` 方法捕获异常,并确保在高并发场景下优雅地处理错误。
阅读全文