• 技术文章 >Java >java教程

    Spring Boot统一异常处理实例代码详解

    黄舟黄舟2017-03-09 10:39:33原创828
    我们在做Web应用的时候,请求处理过程中发生错误是非常常见的情况。这个时候就需要统一异常处理了,这篇文章主要给大家介绍了Spring Boot如何进行统一异常处理的相关资料,需要的朋友可以参考借鉴,下面来一起看看吧。

    Spring Boot中默认带了error的映射,但是这个错误页面显示给用户并不是很友好。

    统一异常处理

    通过使用@ControllerAdvice定义统一异常处理的类,而不是在每个Controller中逐个定义。

    @ExceptionHandler用来定义函数针对的函数类型,最后将Exception对象和请求URL映射到URL中。

    @ControllerAdvice
    class ExceptionTranslator {
     public static final String DEFAULT_ERROR_VIEW = "error";
     @ExceptionHandler(value = Exception.class)
     public ModelAndView defaultErrorHandler(HttpServletRequest req, Exception e) throws Exception {
      ModelAndView mav = new ModelAndView();
      mav.addObject("exception", e);
      mav.addObject("url", req.getRequestURL());
      mav.setViewName(DEFAULT_ERROR_VIEW);
      return mav;
     }
    }

    实现error.html页面展示

    在templates目录下创建error.html。

    例如:

    <!DOCTYPE html> 
    <html> 
    <head lang="en"> 
     <meta charset="UTF-8" />
     <title>统一异常处理</title>
    </head> 
    <body> 
     <h1>Error Handler</h1>
     <p th:text="${url}"></p>
     <p th:text="${exception.message}"></p>
    </body> 
    </html>

    返回使用Json格式

    只需在@ExceptionHandler之后加入@ResponseBody,就能让处理函数return的内容转换为JSON格式

    创建一个JSON返回对象,如:

    public class ErrorDTO implements Serializable {
     private static final long serialVersionUID = 1L;
     private final String message;
     private final String description;
     private List<FieldErrorDTO> fieldErrors;
     //getter和setter省略
    }

    可以为指定的Exception添加异常处理

    @ExceptionHandler(ConcurrencyFailureException.class)
     @ResponseStatus(HttpStatus.CONFLICT)
     @ResponseBody
     public ErrorDTO processConcurencyError(ConcurrencyFailureException ex) {
      return new ErrorDTO(ErrorConstants.ERR_CONCURRENCY_FAILURE);
     }

    ErrorConstants.ERR_CONCURRENCY_FAILURE 是定义的一个异常信息。

    总结

    以上就是Spring Boot统一异常处理实例代码详解的详细内容,更多请关注php中文网其它相关文章!

    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    上一篇:Mybatis映射文件的实例代码详解 下一篇:Java 回调机制详解及实例代码具体详情
    大前端线上培训班

    相关文章推荐

    • 理解java8中java.util.function.*pojo反射新方法(附代码)• 浅析安卓app和微信授权登录及分享完整对接(代码分享)• 一招教你使用java快速创建Map(代码分享)• 教你一招搞定时序数据库在Spring Boot中的使用• 一文讲解Java中初始化List集合的8种方式(附代码)

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网