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

如何简化Optional嵌套校验逻辑 实现符合条件时统一抛出异常

优化后实现代码

public ResponseEntity<SimpleResponses> get() {
    HttpEntity<Object> httpEntity = this.getEntity();
    ResponseEntity<SimpleResponses> responseEntity = restTemplate.exchange(url, HttpMethod.GET, httpEntity, SimpleResponses.class);

    // 合并所有异常校验条件,任意满足即抛出异常
    if (!responseEntity.getStatusCode().is2xxSuccessful()
        || responseEntity.getBody() == null
        || responseEntity.getBody().getSimpleResponsesList().stream()
              .noneMatch(resp -> "200".equals(resp.getHttpCode()))) {
        throw new CustomRuntimeException("Failed ..... ");
    }

    return responseEntity;
}

优化点说明

  • 调整校验优先级,优先判断接口整体状态码,非2xx时直接触发异常逻辑,无需执行后续空值、列表遍历操作,减少无效计算
  • 合并三类异常判断到同一逻辑分支,消除重复抛异常的冗余代码,可读性大幅提升
  • 补全了原代码缺失的responseEntity.getBody()为空的异常判断逻辑,完全匹配需求要求
  • 用Stream原生的noneMatch方法替代原来filter+findAny+isPresent的嵌套判断,简化列表匹配逻辑,代码更简洁
  • 200写在equals前,避免httpCode为null时触发空指针异常,鲁棒性更强
  • 注:原代码中调用的SimpleResponses::getSimpleResponses和给出的实体类字段名simpleResponsesList不匹配,优化代码已修正为对应getter方法,若实际项目中getter命名不同可自行调整

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 15:21:00