springboot异常处理之404

时间:2024-01-27 22:49:02

ps: 推荐一下本人的通用后台管理项目crowd-admin 以及newbee-mall增强版,喜欢的话给个star就好

开始这篇博文的时候我们先回顾下spring异常处理的几种机制

异常处理机制

  • @ExceptionHandle 注解处理异常

    处理单个controller内部抛出的指定异常

  • @ControllerAdvice+@ExceptionHandler 注解处理异常

    处理所有controller内部抛出的指定异常

  • 自定义 HandlerExceptionResolver 类处理异常

    全局异常处理

事件经过

​ 先说博主最近遇到的问题,在老的spring项目中用@RestControllerAdvice注解定义的全局异常处理类是按如下方式来处理404请求的:

/**
     * 处理404异常
     *
     * @param e
     * @param request
     * @return
     */
    @ExceptionHandler(NoHandlerFoundException.class)
    public Object handle404Exception(NoHandlerFoundException e, HttpServletRequest request) {
        logger.error(e.getMessage(), e);
        if (HttpUtil.isAjax(request)) {
            return Response.error("您请求路径不存在,请检查url!");
        }
        return new ModelAndView("error/404");
    }

但是在新的springboot项目中,博主这样定义时是无法捕获到404请求的