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,可以关闭这条检查:
- 按下
Alt + Enter(Windows/Linux)/Option + Enter(Mac) - 选择“Inspection 'Generic exception thrown' options”
- 选择“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
相关产品推荐
相关产品推荐

