You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java 8中使用Optional简化异常处理与空值判断的问题

用Java 8 Optional简化代码的单行实现

场景1:判断ResponseEntity的body为空则抛异常,否则返回body中property的空安全值

直接通过Optional链式调用实现空判断、异常抛出和空安全取值,单行代码如下:

return Optional.ofNullable(responseEntity.getBody()).orElseThrow(CustomResponseException::new).getProperty();

如果getProperty()可能返回null,需要更严格的空安全处理,可调整为:

return Optional.ofNullable(responseEntity.getBody()).map(body -> Optional.ofNullable(body.getProperty()).orElse(null)).orElseThrow(CustomResponseException::new);

逻辑说明:

  • Optional.ofNullable(responseEntity.getBody())包装body,处理null情况
  • orElseThrow(CustomResponseException::new):若body为空则抛出指定异常
  • 后续map和orElse确保property的空安全返回

场景2:判断responseEntity非空且body为空时抛异常,捕获后存入mapExceptions

利用Optional过滤符合条件的responseEntity,结合try-catch实现单行逻辑:

try { Optional.ofNullable(responseEntity).filter(re -> re.getBody() == null).ifPresent(re -> { throw new CustomResponseException(); }); } catch (CustomResponseException e) { mapExceptions.put("targetKey", e); }

逻辑说明:

  • Optional.ofNullable(responseEntity)处理responseEntity本身为null的情况
  • filter(re -> re.getBody() == null)筛选出body为空的非null responseEntity
  • ifPresent中触发异常抛出,外层catch捕获后将异常存入指定map

内容的提问来源于stack exchange,提问作者joseluisbz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 20:10:29