1. 程式人生 > >spring boot 1.5.4 統一異常處理(九)

spring boot 1.5.4 統一異常處理(九)

springboot springboot1.5.4 springboot整合springdatajpa springboot集成jdbctemplate springboot異常處理

上一篇: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 統一異常處理(九)