gpt4 book ai didi

java - 在Java8中的可选中抛出异常

转载 作者:IT老高 更新时间:2023-10-28 20:50:04 24 4
gpt4 key购买 nike

有一个方法get(sql)(我不能修改)。此方法返回 MyObjects 并且它必须在 try catch block 中,因为那里可能存在 JqlParseException。我的代码是:

String sql = something;
try{
MyObject object = get(sql);
} catch(JqlParseException e){
e.printStackTrace();
} catch(RuntimeException e){
e.printStackTrace();
}

我想删除 try catch 并使用 Optional 类,我试过了:

MyObject object = Optional.ofNullable(get(sql)).orElseThrow(RuntimeException::new);

但 IDE 也强制在那里尝试 catch。 对于:

MyObject object = Optional.ofNullable(get(sql)).orElseThrow(JqlParseException::new));

是一个错误(在 IDE 中)JqlParseException 类型没有定义适用的 JqlParseException()。有什么办法可以避免 try catch block 并使用 optional 吗?

最佳答案

Optional 不是为了处理异常,而是为了处理潜在的 null 而不破坏程序的流程。例如:

 myOptional.map(Integer::parseInt).orElseThrow(() -> new RuntimeException("No data!");

如果可选项为空,这将自动跳过 map 步骤并直接进入 throw 步骤——一个不错的完整程序流程。

当你写作时:

 myOptionalValue.orElseThrow(() -> new RuntimeException("Unavailable"));

...您真正的意思是:返回我的可选值,但如果它不可用则抛出异常。

您似乎想要的是一种创建可选项(立即捕获异常)并在您尝试使用可选项时重新抛出该异常的方法。

关于java - 在Java8中的可选中抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42993428/

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