作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
原代码为
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/
我是一名优秀的程序员,十分优秀!