orElseThrow用于在Optional为空时抛出异常,确保值存在;可自定义异常类型,适用于必须有值的场景,如关键配置缺失或数据库查询结果为空,相比orElse和orElseGet更强调快速失败,提升代码健壮性。
当使用 Java 的 Optional.orElseThrow 方法时,它的作用是:如果 Optional 中有值,就返回该值;如果没有值(即为空),就抛出一个异常。这个方法是处理可能为空的对象时非常安全且推荐的方式。
该方法有两种形式:
示例代码:
Optionaloptional = Optional.empty(); // 使用 orElseThrow(),抛出默认异常 String result1 = optional.orElseThrow(); // 抛出:NoSuchElementException // 使用 orElseThrow(Supplier),自定义异常 String result2 = optional.orElseThrow(() -> new IllegalArgumentException("值不能为空")); // 抛出:IllegalArgumentException: 值不能为空
当你明确知道某个 Optional 在特定场景下“**不应该为空**”,如果为空说明出现了异常情况,这时就应该中断流程并抛出异常。
常见场景包括:
对比其他类似方法可以更清楚 orElseThrow 的定位:
使用 orElseThrow 时注意以下几点:
基本上就这些。合理使用 orElseThrow 能让代码更清晰地表达“非空”假设,提升健壮性和可读性。