SpringBoot中的异常处理方式


SpringBoot中有五种处理异常的方式:

一、自定义错误页面

  SpringBoot默认的处理异常机制:SpringBoot默认的已经提供了一套处理异常的机制。一旦程序出现了异常SpringBoot就像/error的url发送请求。在springboot中提供了一个叫BasicExceptionController来处理/error请求,然后跳转到默认显示异常的页面来展示异常信息。

  如果我们需要将所有的异常统一跳转到自定义的错误页面,需要在src/main/resources/templates目录下创建error.html页面。并添加这个标签。

  <span th:text="${exception}"></span>

二、@ExceptionHandle注解处理异常

  只需要在controller中添加这样的方法:

1 @ExceptionHandler(value={java.lang.ArithmeticException.class}) 2 public ModelAndView arithmeticExceptionHandler(Exception e) { 3     ModelAndView mv = new ModelAndView(); 4     mv.addObject("error", e.toString()); 5     mv.setViewName("error"); 6     return mv; 7 }

三、@ControllerAdvice+@ExceptionHandler注解处理异常

  需要创建一个能够处理异常的全局异常类。在该类上需要添加@ControllerAdvice注解。

 1 @ControllerAdvice  2 public class GlobalException {  3     @ExceptionHandler(value={java.lang.ArithmeticException.class})  4     public ModelAndView arithmeticExceptionHandler(Exception e) {  5         ModelAndView mv = new ModelAndView();  6         mv.addObject("error", e.toString());  7         mv.setViewName("error");  8         return mv;  9  } 10 }

四、配置SimpleMappingExceptionResolver处理异常

  在全局异常类中添加一个方法完成异常类的统一处理

 1 @Configuration  2 public class GlobalException {  3     public SimpleMappingExceptionResolver getSimpleMappingExceptionResolver() {  4         SimpleMappingExceptionResolver resolver = new SimpleMappingExceptionResolver();  5         Properties properties = new Properties();  6         properties.put("java.lang.ArithmeticException", "error");  7  resolver.setExceptionMappings(properties);  8         return resolver;  9  } 10 }

五、自定义HandlerExceptionResolver类处理异常

  需要在全局异常类中实现HandlerExceptionResolver接口

 1 @Configuration  2 public class GlobalException implements HandlerExceptionResolver {  3  @Override  4     public ModelAndView resolverException(HttpServletRequest request, HttpServletResponse response, Object object, Exception exception) {  5         ModelAndView mv = new ModelAndView();  6         if(exception instanceof ArithmeticException) {  7             mv.setViewName("error");  8  }  9         mv.addObject("error", exception.toString()); 10         return mv; 11  } 12 }

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM