Java CompletableFuture-如何触发异常?

Java CompletableFuture-如何触发异常?,java,java-8,completable-future,Java,Java 8,Completable Future,这是我的代码: public void deletevendor(VendorEntity vendorEntity) throws Exception { CompletableFuture<Void> future = CompletableFuture.runAsync(() -> { try { dwService.deleteVendor(vendorEntity); } catch (Exception

这是我的代码:

public void deletevendor(VendorEntity vendorEntity) throws Exception {
    CompletableFuture<Void> future = CompletableFuture.runAsync(() -> {
        try {
            dwService.deleteVendor(vendorEntity);
        } catch (Exception ex) {
            log.info("Error occurred ", ex);
        }
    });
    Boolean isCancelled = future.isCancelled();
    Boolean isDone = future.isDone();
    Boolean isCompletedExceptionally = future.isCompletedExceptionally();

    System.out.println("Asynchronous CompletableFuture: " + isCancelled +" "+ isDone+" "+ isCompletedExceptionally );
}
public void deletevendor(VendorEntity VendorEntity)引发异常{
CompletableFuture=CompletableFuture.runAsync(()->{
试一试{
dwService.deleteVendor(供应商实体);
}捕获(例外情况除外){
log.info(“发生错误”,例如);
}
});
布尔值isCancelled=future.isCancelled();
布尔值isDone=future.isDone();
布尔值isCompletedExceptionally=future.isCompletedExceptionally();
System.out.println(“异步可完成未来:+isCancelled+”“+isDone+”“+iscompletedexception”);
}

我在try块中的代码运行良好。我想触发挡块。我该怎么做呢。什么输入可以触发我的completablefuture异常?

为了进行
Future
的实验,这是触发
catch
子句的方法:

CompletableFuture<Void> future = CompletableFuture.runAsync(() -> {
    try {
        throw new Exception("");
    } catch (Exception ex) {
        log.info("Error occurred ", ex);
    }
});
CompletableFuture=CompletableFuture.runAsync(()->{
试一试{
抛出新异常(“”);
}捕获(例外情况除外){
log.info(“发生错误”,例如);
}
});

根据您的代码片段,如前所述,整个异常抛出逻辑都在调用
dwService.deleteVendor(vendorEntity)
方法的内部。这意味着您必须将特定的
vendorenty
传递到此
public void deletevendorenty(vendorenty vendorenty)中
方法以抛出在
CompletableFuture中捕获的异常

完全取决于
dwService.deleteVendor
。您想触发
try{…}catch(异常ex){…}
构造的
catch
块的执行,好吗。但是周围的
CompletableFuture
东西有什么关联呢?请注意,如果您在lambda中处理传递给
runAsync()
的异常,那么您的未来将永远不会异常完成,除非您取消它。