import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
public class CompletableFutureExceptionHandling {
public static void main(String[] args) {
CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> {
// 模拟网络请求,这里可能抛出异常
if (Math.random() < 0.5) {
throw new RuntimeException("网络请求失败");
}
return "从远程服务器获取到的数据";
});
future.exceptionally(ex -> {
System.out.println("捕获到异常: " + ex.getMessage());
return "默认值";
}).thenAccept(System.out::println);
// 以下是获取结果的方式,在实际应用中如果需要阻塞获取结果可以使用这种方式
try {
System.out.println(future.get());
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
}
}
}