如何修改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
相关产品推荐
相关产品推荐

