如果没有值,则抛出异常

如果尚未设置,则使用 OptionalorElseThrow() 方法获取包含的值或抛出异常。这与调用 get() 类似,不同之处在于它允许任意异常类型。该方法需要一个必须返回抛出异常的供应商。

在第一个示例中,该方法只返回包含的值:

Optional optional = Optional.of("something");

return optional.orElseThrow(IllegalArgumentException::new);
// returns "something" string

在第二个示例中,该方法抛出异常,因为尚未设置值:

Optional optional = Optional.empty();

return optional.orElseThrow(IllegalArgumentException::new);
// throws IllegalArgumentException

如果需要使用消息抛出异常,也可以使用 lambda 语法:

optional.orElseThrow(() -> new IllegalArgumentException("Illegal"));