当前位置: 首页 > 知识库问答 >
问题:

CompletableFuture-如何触发异常?

萧德庸
2023-03-14

这是我的代码:

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 );
}

我在try块中的代码运行正常。我想触发catch块。我该怎么做。可以触发我的完全未来异常的输入是什么?

共有1个答案

曾飞沉
2023-03-14

为了对< code>Future进行实验,这是您触发< code>catch子句的方式:

CompletableFuture<Void> future = CompletableFuture.runAsync(() -> {
    try {
        throw new Exception("");
    } catch (Exception ex) {
        log.info("Error occurred ", ex);
    }
});

根据您的代码片段,如前所述,整个异常抛出逻辑都在内部调用dwService。deleteVendor(vendorEntity)方法。这意味着您必须将一个特定的vendorEntity传递到这个public void deletevendor(vendorEntity vendor实体)method中,以便抛出在

 类似资料:
  • 问题内容: 我在中有一个(),如果按下该按钮,我将在for循环中对其列表中的列表执行任务。这样做时,我需要更新。 问题是,当我按下JButton时,该任务是在事件调度线程(EDT)中执行的。因此,我无法更新在主线程或UI线程中触发的事件。 现在,源代码对我不可用,因为我完全更改了源代码,并尝试使用Eclipse SWT 触发Swing时,它变得混乱。 现在我得到了错误,因为Display对象在单独

  • 我正在尝试实现一个通用的REST客户端,如下所示。我有自己的模型将HTTP响应表示为response T。这里T是服务调用的返回类型,它可能只是T或Ts列表。下面的代码不编译,我需要帮助。 最终调用下面的方法,

  • 问题内容: __ 我没有看到一种处理异步结果异常的明显方法。例如,如果我想重试异步操作。我会期望像这样的事情,但是handleAsync并没有按照您认为的那样做- 异步地在另一个线程上运行回调。在这里返回CompletionStage是不正确的。当天的危害问题:就是因为是为了什么? AskPong在哪里问演员: 问题答案: __ 在试图找出用Java 8完成Scala的restoreWith的正确

  • 我一直在玩CompletableFuture,发现了一件奇怪的事情。 如果在我的thenAccept调用中,断言失败,则不会传播异常。当时我尝试了更丑陋的东西: 不会发生任何事情,不会传播任何异常。我尝试使用诸如handle等方法以及与CompletableFutures中异常相关的其他方法,但失败了-没有一个方法像预期的那样传播异常。 当我调试CompletableFuture时,它会捕获如下异

  • 我研究了以下代码:如何组合3个或多个CompletionStages?,但在这篇文章中,只有来自CompletableFutures的已完成任务被组合。 我如何将异步的CompletableFuture与Complted CompletableFuture相结合,以便将已经完成的CompletableFuture的结果与尚未计算结果的结果相结合?

  • 假设我有这个示例代码,在中遇到了一个异常。我的问题是,这个异常是否会阻止作为在与此代码的调用者方法相同的线程中运行。 我已经浏览了这个主题,它解释了如何处理从异步块抛出的异常(即通过阻塞和使用)。我想知道如果”,块中的代码是否会被执行。 更新: 我运行了一些代码来测试: 它不会打印任何内容,这意味着异常不会从异步块“传播到/到达”调用方方法的线程。我现在了解这里的预期行为,但我有以下问题: 为什么