如果没有值,则抛出异常
如果尚未设置,则使用 Optional
的 orElseThrow()
方法获取包含的值或抛出异常。这与调用 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"));