您好,登錄后才能下訂單哦!
處理方式一:實(shí)現(xiàn)ErrorController接口
原理:Spring Boot 將所有的錯(cuò)誤默認(rèn)映射到/error, 實(shí)現(xiàn)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-系統(tǒng)出錯(cuò),請(qǐng)聯(lián)系后臺(tái)管理員</h2> </body> </html>
在瀏覽器中輸入一個(gè)不存在的URL,效果如下:
---------------------------------------------分割線---------------------------------------------
處理方式二:添加自定義的錯(cuò)誤頁(yè)面
對(duì)于html靜態(tài)頁(yè)面:
在resources/public/error/ 下定義
如添加404頁(yè)面:resources/public/error/404.html頁(yè)面,中文注意頁(yè)面編碼
對(duì)于模板引擎頁(yè)面:
在templates/error/下定義
如添加5xx頁(yè)面:templates/error/5xx.ftl
注:templates/error/ 這個(gè)的優(yōu)先級(jí)比較 resources/public/error/高
效果:此處輸入不存在的URL,則訪問(wèn)我們的404.hmtl;如果拋出異常,則訪問(wèn)我們的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 { /** * 統(tǒng)一異常處理 * * @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; } /** * 統(tǒng)一異常處理 * * @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-系統(tǒng)錯(cuò)誤</h2> <h2>${roncooException}</h2> </body> </html>
測(cè)試:輸入一個(gè)會(huì)拋異常的URL
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。