SpringBoot中的异常处理方式

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

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

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

  

二、@ExceptionHandle注解处理异常
  只需要在controller中添加这样的方法:

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

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

  @ControllerAdvice
  public class GlobalException {
      @ExceptionHandler(value={java.lang.ArithmeticException.class})
      public ModelAndView arithmeticExceptionHandler(Exception e) {
          ModelAndView mv = new ModelAndView();
          mv.addObject("error", e.toString());
          mv.setViewName("error");
          return mv;
      }
 }

四、配置SimpleMappingExceptionResolver处理异常
  在全局异常类中添加一个方法完成异常类的统一处理

  @Configuration
  public class GlobalException {
      public SimpleMappingExceptionResolver getSimpleMappingExceptionResolver() {
          SimpleMappingExceptionResolver resolver = new SimpleMappingExceptionResolver();
          Properties properties = new Properties();
          properties.put("java.lang.ArithmeticException", "error");
          resolver.setExceptionMappings(properties);
          return resolver;
      }
 }

五、自定义HandlerExceptionResolver类处理异常
  需要在全局异常类中实现HandlerExceptionResolver接口

  @Configuration
  public class GlobalException implements HandlerExceptionResolver {
      @Override
      public ModelAndView resolverException(HttpServletRequest request, HttpServletResponse response, Object object, Exception exception) {
          ModelAndView mv = new ModelAndView();
          if(exception instanceof ArithmeticException) {
              mv.setViewName("error");
          }
          mv.addObject("error", exception.toString());
         return mv;
     }
 }

你可能感兴趣的:(SpringBoot中的异常处理方式)