gpt4 book ai didi

java - 如何在Optional中抛出自定义异常

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

原代码为

if(object==null){
throw new CustomException(ErrorEnum.OBJECT_NULL)
}

现在我想使用Optional来处理NullPointerException。就像这样

Optional.ofNullable(object).orElseThrow(()->{throw new CustomException(ErrorEnum.OBJECT_NULL);}

但是这样做会使代码比原始代码长得多。也许我应该使用第一种方法来解决问题?

最佳答案

Optional.ofNullable(object).orElseThrow(() -> new CustomException(ErrorEnum.OBJECT_NULL));

如果您阅读 Optional 中的方法定义javadoc

public <X extends Throwable> T orElseThrow(Supplier<? extends X> exceptionSupplier) throws X extends Throwable

这表明您需要 X 的供应商,其中 X 扩展了 Throwable。 Supplier是一个带有get方法的接口(interface)。由于它只有 1 个抽象方法,因此它是一个可以使用 Lambda 表达式实例化的函数式接口(interface)。

由于它不带参数,我们将执行 () -> new CustomException("your error message"); 这将创建一个 Supplier 实例,该实例返回 CustomException 对象当调用 get 时,我将其作为参数传递给 orElseThrow

话虽如此,您不应该在此用例中使用Optional,因为它不会给您带来任何好处。

希望有帮助:)

关于java - 如何在Optional中抛出自定义异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49510605/

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