溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

springBoot(7):web開發(fā)-錯(cuò)誤處理

發(fā)布時(shí)間:2020-07-09 17:43:30 來(lái)源:網(wǎng)絡(luò) 閱讀:446 作者:我愛大金子 欄目:開發(fā)技術(shù)

處理方式一:實(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>

springBoot(7):web開發(fā)-錯(cuò)誤處理


在瀏覽器中輸入一個(gè)不存在的URL,效果如下:

 springBoot(7):web開發(fā)-錯(cuò)誤處理

---------------------------------------------分割線---------------------------------------------

處理方式二:添加自定義的錯(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/高

springBoot(7):web開發(fā)-錯(cuò)誤處理

效果:此處輸入不存在的URL,則訪問(wèn)我們的404.hmtl;如果拋出異常,則訪問(wèn)我們的5xx.ftl

 springBoot(7):web開發(fā)-錯(cuò)誤處理

 springBoot(7):web開發(fā)-錯(cuò)誤處理

---------------------------------------------分割線---------------------------------------------

處理方式三:使用注解@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

 springBoot(7):web開發(fā)-錯(cuò)誤處理




向AI問(wèn)一下細(xì)節(jié)

免責(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)容。

AI