SpringMVC 方法的try_catch解决方法

1.目的

在做springmvc项目时,我们一般是把事务配置在service中,运行有异常时把异常抛出给controller捕获解决,spring事务管理器进行回滚。
现在为解决 Controller 层进行 try-catch 的重复出现,可以使用 @ControllerAdvice + @ExceptionHandler 进行全局的 Controller 层异常处理。应用在所有被 @RequestMapping 注解的方法上

2.优缺点

  • 优点:将 Controller 层的异常和数据校验的异常进行统一处理,减少模板代码,减少编码量,提升扩展性和可维护性。
  • 缺点:只能处理 Controller 层未捕获(往外抛)的异常,对于 Interceptor(拦截器)层的异常,Spring 框架层的异常,就无能为力了。

3.使用示例
image.png

1 @ControllerAdvice 注解定义全局异常处理类
确保此 GlobalExceptionHandler 类能被扫描到并装载进 Spring 容器中。
2 @ExceptionHandler 注解声明异常处理方法
myExceptionHandler方法会解决所有 Controller 层抛出的 Exception 及其子类的异常

你可能感兴趣的:(SpringMVC 方法的try_catch解决方法)