You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改Java方法中的orElseThrow逻辑,使其返回提示信息与0.0值

如何修改Java方法中的orElseThrow逻辑,使其返回提示信息与0.0值

我来帮你调整这个方法的逻辑,完全贴合你的需求~

首先,你需要把原来抛出异常的orElseThrow替换成能处理空结果的逻辑:当流中找不到符合条件的元素时,调用VisualMessage.getPrezzoVenditaNullo(nomeArticolo)给用户提示,然后返回0.0。同时还要调整整个方法的返回逻辑,避免返回null,统一在无有效结果时返回0.0。

修改后的完整代码如下:

public static Double getUltimoPrezzo(List<ArticoliPerFornitore> lista, String nomeArticolo) {
    try {
        ArticoliPerFornitore lastContact = lista.stream()
                .filter(c -> c.getDataUltimoAcquisto() != null)
                .collect(Collectors.maxBy(Comparator.comparing(c -> c.getDataUltimoAcquisto())))
                // 替换orElseThrow为orElseGet,处理空结果的情况
                .orElseGet(() -> {
                    VisualMessage.getPrezzoVenditaNullo(nomeArticolo);
                    return null;
                });
        
        // 如果找到有效元素就返回价格,否则返回0.0
        return lastContact != null ? lastContact.getPrezzoUltimoAcquisto() : 0.0;
    } catch (Exception e) {
        log.logStackTrace(e);
        // 捕获到异常时也返回0.0,同时调用提示方法(可根据需求选择是否保留)
        VisualMessage.getPrezzoVenditaNullo(nomeArticolo);
        return 0.0;
    }
}

关键改动说明:

  • 给方法添加了nomeArticolo参数,因为你的提示方法需要这个参数(原来的方法里没有该参数,必须补上才能正常调用VisualMessage.getPrezzoVenditaNullo)
  • 将orElseThrow替换为orElseGet,在空结果时执行提示方法并返回null
  • 增加了判断逻辑:如果获取到有效元素就返回对应价格,否则返回0.0
  • 调整了catch块的返回逻辑:捕获到任何异常时,同样调用提示方法并返回0.0,确保方法不会返回null

如果你不想在异常时也调用提示,直接把catch块里的VisualMessage调用去掉就好,完全可以根据你的实际需求调整~

备注:内容来源于stack exchange,提问作者bircastri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.15 10:40:28