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

SpringBoot简历项目自定义RestExceptionHandler异常处理器不生效求助

问题原因排查及解决方案

核心问题原因

  • @RestControllerAdvice配置错误

    @RestControllerAdvice是针对Controller层的异常增强组件,仅会捕获从Controller层向上抛出的异常。你当前配置的basePackages = "com.cvresumeproject.cvresumeproject.service.*"指向Service包,且末尾多余加了.*通配符,就算异常从Service抛到Controller,异常处理器也扫描不到对应的Controller,无法触发捕获逻辑。

  • 启动类@ComponentScan配置错误

    你在启动类上强制指定@ComponentScan扫描单个类的路径,直接覆盖了SpringBoot默认的包扫描规则,会导致Controller、Service等其他业务组件无法被Spring容器加载,自然异常流转链路也无法被异常处理器感知。

  • Service层未主动抛出自定义异常

    你写的业务代码直接调用templateRepository.findById(id).get(),如果ID不存在,JPA的Optional.get()会直接抛出NoSuchElementException,没有触发CustomNotFoundException的抛出逻辑,异常处理器自然捕获不到对应类型的异常。

修复步骤

  1. 修正启动类配置
    移除错误的@ComponentScan配置,使用SpringBoot默认的包扫描规则即可:
@SpringBootApplication
public class CvresumeprojectApplication {
    public static void main(String[] args) {
        SpringApplication.run(CvresumeprojectApplication.class, args);
    }
}
  1. 修正全局异常处理器配置
    调整@RestControllerAdvice的扫描范围为Controller所在包,或者直接省略basePackages属性默认扫描所有Controller:
@Order(Ordered.HIGHEST_PRECEDENCE)
@RestControllerAdvice(basePackages = "com.cvresumeproject.cvresumeproject.controller")
public class RestExceptionHandler {
    @ExceptionHandler(value = CustomNotFoundException.class)
    protected ResponseEntity<Object> handleEntityNotFound(CustomNotFoundException exception){
        ApiError apiError = new ApiError(HttpStatus.NOT_FOUND);
        apiError.setMessage(exception.getMessage());
        return new ResponseEntity<>(apiError, apiError.getStatus());
    }
}
  1. 修正Service层异常抛出逻辑
    先判断查询结果是否为空,为空时手动抛出自定义异常:
@Override
public TemplateDto findById(Long id) throws CustomNotFoundException {
    Template template = templateRepository.findById(id)
            .orElseThrow(() -> new CustomNotFoundException("ID为" + id + "的模板不存在"));
    return templateMapper.templateToTemplateDto(template);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 08:18:02