【发布时间】:2019-10-25 19:21:05
【问题描述】:
当我试图理解 exceptionally 功能时,我阅读了几个 blogs 和 posts ,但我不明白这段代码有什么问题:
public CompletableFuture<String> divideByZero(){
int x = 5 / 0;
return CompletableFuture.completedFuture("hi there");
}
我认为当使用exceptionally 或handle 调用divideByZero 方法时我将能够捕获异常,但程序只是打印堆栈跟踪并退出。
我都试过了,或者handle & exceptionally:
divideByZero()
.thenAccept(x -> System.out.println(x))
.handle((result, ex) -> {
if (null != ex) {
ex.printStackTrace();
return "excepion";
} else {
System.out.println("OK");
return result;
}
})
但结果总是:
线程“主”java.lang.ArithmeticException 中的异常:/ 为零
【问题讨论】:
-
如果可能抛出异常,你的这个块必须在 try catch 中 public CompletableFuture
divideByZero(){ int x = 5 / 0; return CompletableFuture.completedFuture("你好"); }
标签: java exception java-8 completable-future