Spring 配置全局异常处理

方式一:@ControllerAdvice注解

使用注解方式AOP全局处理异常,配合@ExceptionHandler使用
@ControllerAdvice,是Spring3.2提供的新注解,是一个Controller增强器,可对controller中被 @RequestMapping标注的方法加一些逻辑处理。

@ControllerAdvice
public class GlobalExceptionHandler {

    @ExceptionHandler(Exception.class)
    @ResponseBody
    public ModelAndView exceptionHandler(Exception ex){
        ModelAndView mv = new ModelAndView(new MappingJackson2JsonView());
        mv.addObject("message",ex.getMessage());
        mv.addObject("code", HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
        return mv;
    }
}
ExceptionHandler(value = Exception.class)==>ExceptionHandler(value = RuntimeException.class)
handleGlobalException(Exception ex)==>handleGlobalException(RuntimeException ex)
Runtime Exception 是 继承自 Exception的;
Runtime Exception 是 虚拟机正常运行时候的异常,是try catch有可能捕获不到的。
所以通常Exception,范围更大。

方式二:实现HandlerExceptionResolver接口

除了注解的方式以外,还可以实现HandlerExceptionResolver该异常处理器接口,重写resolveException方法,对异常进行处理。

1.写全局异常处理器实现类

@Component
public class GlobalExceptionHandler implements HandlerExceptionResolver {

    @Override
    public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
        ModelAndView mv = new ModelAndView(new MappingJackson2JsonView());
        mv.addObject("message",ex.getMessage());
        mv.addObject("code", HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
        return mv;
    }
}

2.注册全局异常处理器

@Configuration
public class GlobalExceptionHandlerConfig implements WebMvcConfigurer {

    @Override
    public void configureHandlerExceptionResolvers(List<HandlerExceptionResolver> resolvers) {
        resolvers.add(new GlobalExceptionHandler());
    }
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值