Spring異常處理

Spring異常處理

無規(guī)則不成方圓,很多人知道這句話,但是做到的很少,因?yàn)殡S性,開發(fā)寫B(tài)UG實(shí)際中,經(jīng)常有這樣那樣的錯(cuò)誤,怎么把錯(cuò)誤統(tǒng)一起來,怎么收集一個(gè)錯(cuò)誤,這是最關(guān)鍵的,這里拋開日志的記錄,那些是單獨(dú)話題,這里我說如何優(yōu)雅的異常處理。優(yōu)雅是相對(duì)而言,我們這里要做的就是不那么嘍,就是不要控制器中出現(xiàn)大片的try..cach..這樣的語(yǔ)句,有的甚至說不控制不就可以了嗎?不控制更危險(xiǎn),因?yàn)椴豢刂齐S意顯示,有可能導(dǎo)致直接解散!

異常處理必備知識(shí):

@ControllerAdvice

這個(gè)其實(shí)看源碼就知道,他其實(shí)是@Compoent他在運(yùn)行的時(shí)候其實(shí)就會(huì)是一個(gè)Bean

@ExceptionHandler

通過這個(gè)注解的value屬性,我們能指定我們要攔截的異常,這里指定根方法,進(jìn)行所有異常的攔截,當(dāng)然也可以單獨(dú)攔截某一種異常,后邊我會(huì)講到

優(yōu)雅處理錯(cuò)誤步驟

①做一個(gè)美觀的錯(cuò)誤頁(yè)面

②添加一個(gè)ControllerAdvice控制器,用來攔截所有異常

③人為去制造一個(gè)錯(cuò)誤

做一個(gè)美觀的錯(cuò)誤頁(yè)面

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>錯(cuò)誤顯示DEMO</title>
</head>
<body>
    ${erroMsg}
</body>
</html>

定義ControllerAdvice控制器

@ControllerAdvice
public class ExceptionDemo {
    @ExceptionHandler(value = Exception.class)
    public ModelAndView exception(Exception exception, WebRequest request) {
        ModelAndView modelAndView = new ModelAndView("error");
        modelAndView.addObject("erroMsg", exception.getMessage());
        return modelAndView;
    }
}

造一個(gè)錯(cuò)誤來測(cè)試

@Controller
public class DemoController {
    
    @RequestMapping("/advice")
    public String demo() throws IllegalAccessException {
        throw new IllegalAccessException("sulwan");
    }
}

測(cè)試效果

http://localhost:8080/advice

預(yù)覽這個(gè)地址,應(yīng)該就看見了我們自定義錯(cuò)誤消息顯示到頁(yè)面去了!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容