gpt4 book ai didi

java - 无法在 lambda 表达式内触发异常

转载 作者:行者123 更新时间:2023-12-01 19:32:06 25 4
gpt4 key购买 nike

我对 Java 8 有点陌生,正在尝试在 lambda 表达式中抛出异常,如下所示:如果 subQty 小于 min 或大于 max,在这种情况下,我的单元测试计算出的 min/max 为 182和 255,并且我提交的 subQty 为 10,因此它应该引发异常并导致单元测试失败。但是,我一直获得绿灯,这是为什么?

public void verifyingIndividualSubmissionValueLimits(String alias, double min, double max)
// ... some code here ...

// Get local stock price
CompletableFuture<Double> localPriceFuture = instrumentRequester.getMidPrice(instId);

// Calculate the min and max quantity
localPriceFuture.thenAcceptBoth(dollarFxRateFuture,
(localPrice, fxRate) -> {
double minLocalValue = min * fxRate;
double maxLocalValue = max * fxRate;
long minQuantity = Math.round(minLocalValue / localPrice);
long maxQuantity = Math.round(maxLocalValue / localPrice);
if (subQty < minQuantity || subQty > maxQuantity) {
log.debug("We should throw an exception because subQty is {}", subQty);
throw new SubmissionValidationException(String.format("Quantity: %s, is not within %s and %s", subQty, minQuantity, maxQuantity));
}
}
);
}

最佳答案

您在不同的线程中抛出异常。您正在创建一个计算最小、最大速率并引发异常的线程,但异常发生在线程中,因此您在主线程中看不到任何异常(在本例中为 verifyingIndividualSubmissionValueLimits)。您可以在此处阅读回调和异步线程 https://www.callicoder.com/java-8-completablefuture-tutorial/

关于java - 无法在 lambda 表达式内触发异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59405106/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com