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

Java 11(OpenJDK11)Spring Boot2.3.6中Optional orElseThrow代码红下划线问题

问题原因分析及解决办法

首先,你的代码能正常运行但IntelliJ IDEA显示红下划线,大概率是IDEA的静态代码检查(Inspection)给出的提示,而非代码语法错误。结合你的环境(Java 11、Spring Boot 2.3.6),具体原因和解决方式如下:

1. 核心触发原因:通用RuntimeException的代码检查提示

IDEA默认会开启代码规范检查,其中一条规则是不建议直接抛出无业务意义的通用RuntimeException,而是推荐使用更具体的自定义异常(比如针对资源不存在的PostNotFoundException),这样能提升代码的可读性、可维护性,也方便后续的异常统一处理。

不管你用方法引用RuntimeException::new还是lambda表达式() -> new RuntimeException(),本质都是抛出通用运行时异常,这正好触发了IDEA的这条检查规则,所以会显示红下划线。

2. 查看具体提示信息的方法

你可以通过以下操作确认IDEA的具体提示:

  • 把鼠标悬停在红下划线的代码行上,会弹出提示框
  • 或者按下Alt + Enter(Windows/Linux)/Option + Enter(Mac),查看完整的提示选项和说明

3. 解决方式

方式一:自定义具体业务异常(推荐)

创建一个贴合业务场景的自定义异常,比如针对帖子不存在的情况:

public class PostNotFoundException extends RuntimeException {
    public PostNotFoundException(long postId) {
        super("未找到ID为" + postId + "的帖子");
    }
}

然后修改业务代码:

Post post = postRepository.findById(postId)
        .orElseThrow(() -> new PostNotFoundException(postId));

这种方式既符合代码最佳实践,也能直接消除IDEA的红下划线提示。

方式二:临时关闭对应检查规则

如果你确实需要保留抛出RuntimeException,可以关闭这条检查:

  1. 按下Alt + Enter(Windows/Linux)/Option + Enter(Mac)
  2. 选择“Inspection 'Generic exception thrown' options”
  3. 选择“Disable inspection”(永久关闭)或者调整检查级别(比如从Error改为Warning)

方式三:确认IDEA与依赖的兼容性

确保你的IDEA版本适配Spring Boot 2.3.6和Java 11,同时Lombok插件正常工作:

  • 打开IDEA设置(File > Settings)
  • 进入Plugins,搜索Lombok并确认已启用
  • 进入Build, Execution, Deployment > Compiler > Annotation Processors,勾选“Enable annotation processing”

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 07:28:41