orElseThrow比if(obj == null)更好吗?

时间:2018-04-26 10:04:13

标签: java exception java-8 null optional

我有一个问题。

这是

Issue issue = Optional.ofNullable(someMethod())
    .orElseThrow(() -> new Exception("Issue is null"));

比这更好

Issue issue = someMethod();
if (issue == null) {
    throw new Exception("Issue is null");
}

1 个答案:

答案 0 :(得分:3)

Optional的目的不是替换代码库中的每个空引用,而是帮助设计更好的API,只需读取方法的签名 - 用户可以判断是否期望可选值。此外,Optional强制您主动解包Optional以处理缺少值;因此,您可以保护代码免受意外的空指针异常的影响。

Optional reference

根据doc可选应该使用多链接调用完成的地方,并且不确定哪一个会抛出NullPointerException。 您必须考虑阅读文档,确保它有助于您了解Optional用法。