zoukankan      html  css  js  c++  java
  • 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 }
  • 相关阅读:
    03 类与对象
    课堂作业02程序设计
    动手动脑
    做课题时的一些问题
    课题一
    《大道至简》JAVA伪代码读后感
    题目-兔子繁衍问题
    题目-求一个日期是该年中的第几天
    题目-查验身份证
    题目-删除重复字符
  • 原文地址:https://www.cnblogs.com/guanghe/p/10968290.html
Copyright © 2011-2022 走看看