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

 

1      Spring Boot统一异常处理

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

springboot项目为例,进行处理!

spring-boot相关项目源码,

码云地址:https://git.oschina.net/wyait/springboot1.5.4.git

github地址https://github.com/wyait/spring-boot-1.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代码。

启动,访问:

wKioL1nLTICB14ArAABk4mpekRg617.png

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

wKiom1nLTMfSamHSAABf1PTcPtQ055.png

 

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

 

项目源码,

码云地址:https://git.oschina.net/wyait/springboot1.5.4.git

github地址:https://github.com/wyait/spring-boot-1.5.4.git


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 定时任务和异步调用(十)

spring boot 1.5.4 整合log4j2(十一)

spring boot 1.5.4 整合 mybatis(十二)

spring boot 1.5.4 整合 druid(十三)

spring boot 1.5.4 之监控Actuator(十四)

spring boot 1.5.4 整合webService(十五)

spring boot 1.5.4 整合redis、拦截器、过滤器、监听器、静态资源配置(十六)

spring boot 1.5.4 整合rabbitMQ(十七)

spring boot 1.5.4 集成Swagger2构建Restful API(十八)

spring boot 1.5.9 整合redis(十九