您好,登錄后才能下訂單哦!
處理方式一:實現ErrorController接口
原理:Spring Boot 將所有的錯誤默認映射到/error, 實現ErrorController接口
代碼:
package com.example.demo.controller; import org.springframework.boot.autoconfigure.web.ErrorController; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; /** * Created by ly on 2017/6/17. */ @Controller @RequestMapping("error") public class BaseErrorController implements ErrorController { @Override public String getErrorPath() { return "error/error"; } @RequestMapping public String error() throws Exception { return getErrorPath(); } }
error.ftl:
<!DOCTYPE html> <html> <head lang="en"> <title>Spring Boot Demo - FreeMarker</title> </head> <body> <h2>error-系統出錯,請聯系后臺管理員</h2> </body> </html>
在瀏覽器中輸入一個不存在的URL,效果如下:
---------------------------------------------分割線---------------------------------------------
處理方式二:添加自定義的錯誤頁面
對于html靜態頁面:
在resources/public/error/ 下定義
如添加404頁面:resources/public/error/404.html頁面,中文注意頁面編碼
對于模板引擎頁面:
在templates/error/下定義
如添加5xx頁面:templates/error/5xx.ftl
注:templates/error/ 這個的優先級比較 resources/public/error/高
效果:此處輸入不存在的URL,則訪問我們的404.hmtl;如果拋出異常,則訪問我們的5xx.ftl
---------------------------------------------分割線---------------------------------------------
處理方式三:使用注解@ControllerAdvice(全局異常處理)
ExcepitonHandler.java
package com.example.demo.handler; import org.springframework.http.HttpStatus; import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.ResponseStatus; import org.springframework.web.servlet.ModelAndView; /** * Created by ly on 2017/6/17. */ @ControllerAdvice public class ExcepitonHandler { /** * 統一異常處理 * * @param exception * exception * @return */ @ExceptionHandler({ RuntimeException.class }) @ResponseStatus(HttpStatus.OK) public ModelAndView processException(RuntimeException exception) { System.out.println("自定義異常處理-RuntimeException"); ModelAndView m = new ModelAndView(); m.addObject("roncooException", exception.getMessage()); m.setViewName("error/500"); return m; } /** * 統一異常處理 * * @param exception * exception * @return */ @ExceptionHandler({ Exception.class }) @ResponseStatus(HttpStatus.OK) public ModelAndView processException(Exception exception) { System.out.println("自定義異常處理-Exception"); ModelAndView m = new ModelAndView(); m.addObject("roncooException", exception.getMessage()); m.setViewName("error/500"); return m; } }
500.ftl:
<!DOCTYPE html> <html> <head lang="en"> <title>Spring Boot Demo - FreeMarker</title> </head> <body> <h2>500-系統錯誤</h2> <h2>${roncooException}</h2> </body> </html>
測試:輸入一個會拋異常的URL
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。