spring boot 1.5.4 统一异常处理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring boot 1.5.4 统一异常处理相关的知识,希望对你有一定的参考价值。

上一篇:springboot 1.5.4 配置文件详解(八)

 

1      Spring Boot统一异常处理

Spring Boot中实现了默认的error映射,但是在实际应用中,上面你的错误页面对用户来说并不够友好,我们通常需要去实现我们自己的异常提示。

springboot项目为例,进行处理!

springboot项目源码:

https://git.oschina.net/wyait/springboot1.5.4.git


1.1  创建全局异常处理类

通过使用@ControllerAdvice定义统一的异常处理类,而不是在每个Controller中逐个定义。@ExceptionHandler用来定义函数针对的异常类型,最后将Exception对象和请求URL映射到error.html中(默认重定向到error.html页面,可自定义)

/**

 *

 * @项目名称:spring-boot-jsp

 * @类名称:GlobalExceptionHandler

 * @类描述:全局异常处理类

 * @创建人:wyait

 * @创建时间:2017628下午4:06:08

 * @version

 */

@ControllerAdvice

public classGlobalExceptionHandler {

   publicstatic final String DEFAULT_ERROR_VIEW = "error";

 

   @ExceptionHandler(value= Exception.class)

   publicModelAndView defaultErrorHandler(HttpServletRequest req, Exception e)

        throwsException {

      ModelAndViewmav = new ModelAndView();

      mav.addObject("exception",e);

      mav.addObject("url",req.getRequestURL());

      mav.setViewName(DEFAULT_ERROR_VIEW);

      returnmav;

   }

}

1.2  编写error.html

templates目录下创建error.html,将请求的URLException对象的message输出。

<!DOCTYPE html>

<html>

<head>

<metacharset="UTF-8"/>

<title>This is Exceptionhtml</title>

</head>

<body>

   <h1>ErrorHandler</h1>

   <divth:text="${url}"></div>

   <divth:text="${exception.message}"></div>

</body>

</html>

HelloController里添加:1/0代码。

启动,访问:

技术分享

如果没有exception异常,比如:404,页面效果是:

技术分享

 

通过实现上述内容之后,我们只需要在Controller中抛出Exception,当然我们可能会有多种不同的Exception。然后在@ControllerAdvice类中,根据抛出的具体Exception类型匹配@ExceptionHandler中配置的异常类型来匹配错误映射和处理。

 

spring boot系列文章:

spring boot 1.5.4 概述(一)

spring boot 1.5.4 入门和原理(二)

spring boot 1.5.4 之web开发(三)

spring boot 1.5.4 整合JSP(四)

spring boot 1.5.4 集成devTools(五)

spring boot 1.5.4 集成JdbcTemplate(六)

spring boot 1.5.4 集成spring-Data-JPA(七)

spring boot 1.5.4 配置文件详解(八)

spring boot 1.5.4 统一异常处理(九)

spring boot 1.5.4 定时任务和异步调用(十)


 


本文出自 “架构的路上” 博客,请务必保留此出处http://wyait.blog.51cto.com/12674066/1969162

以上是关于spring boot 1.5.4 统一异常处理的主要内容,如果未能解决你的问题,请参考以下文章

spring boot 2 统一异常处理

Spring Boot 统一异常处理

基于Spring Boot的统一异常处理设计

基于spring boot的统一异常处理

Spring Boot? 统一异常处理

Spring Boot2 系列教程 (十四) | 统一异常处理