日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Springboot異常錯(cuò)誤處理解決方案詳解

瀏覽:151日期:2023-04-29 10:12:20

1.在有模板引擎的情況下:

springboot會(huì)默認(rèn)找 templates/error/錯(cuò)誤狀態(tài)碼.html,所以我們要定制化錯(cuò)誤頁(yè)面就可以到templates/error下創(chuàng)建一個(gè)【對(duì)應(yīng)錯(cuò)誤狀態(tài)碼.html】html文件,當(dāng)發(fā)生此狀態(tài)碼的錯(cuò)誤springboot就會(huì)來(lái)到對(duì)應(yīng)的頁(yè)面。

同時(shí)如果我們想讓400-499之間的錯(cuò)誤都去同一個(gè)錯(cuò)誤頁(yè)面,那我們可以在templates/error下創(chuàng)建一個(gè)4xx.html。同理500-599的錯(cuò)誤可以用5xx.html。

Springboot異常錯(cuò)誤處理解決方案詳解

注意:springboot會(huì)優(yōu)先匹配具體的【錯(cuò)誤狀態(tài)碼.html】,然后再匹配4xx,5xx的。例如:發(fā)生了404錯(cuò)誤,springboot優(yōu)先到templates/error下找404.html,如果沒(méi)有404.html,再找有沒(méi)有4xx.html,有的話就會(huì)使用4xx.html。

在錯(cuò)誤頁(yè)面我們能夠獲取到的信息:

timestamp:時(shí)間戳 status:狀態(tài)碼 error:錯(cuò)誤提示 exception:異常對(duì)象 springboot2.1.6在頁(yè)面獲取異常對(duì)象要現(xiàn)在全局配置文件中加入:server.error.include-exception=true message:異常消息 errors:JSR數(shù)據(jù)校驗(yàn)的錯(cuò)誤

2.在沒(méi)有模板引擎(模板引擎找不到這個(gè)錯(cuò)誤頁(yè)面)的情況下,springboot會(huì)到靜態(tài)資源文件夾下的error包下找。

3.以上都沒(méi)有找到錯(cuò)誤頁(yè)面,就默認(rèn)用springboot默認(rèn)的錯(cuò)誤提示頁(yè)面

錯(cuò)誤異常處理——自定義響應(yīng)json數(shù)據(jù)

上邊的錯(cuò)誤處理中,如果是瀏覽器訪問(wèn)可以響應(yīng)我們自己定制的錯(cuò)誤頁(yè)面,但是如果是其他客戶端訪問(wèn),則只會(huì)響應(yīng)固定的json數(shù)據(jù),如下圖所示:

Springboot異常錯(cuò)誤處理解決方案詳解

下邊講解三個(gè)異常處理返回自定義json數(shù)據(jù)的方式

首先編寫一個(gè)自定義異常類

public class UserNotExitException extends RuntimeException { public UserNotExitException() { super('用戶不存在'); }}

方式一:

在異常處理器類中,通過(guò)map封裝我們自己的json數(shù)據(jù),然后將map返回。

@ControllerAdvicepublic class MyExceptionHandler { @ResponseBody @ExceptionHandler(UserNotExitException.class) public Map<String,Object> userNotExitExceptionHandler(Exception e){ Map<String,Object> map = new HashMap<>(); map.put('code','user.notexit'); map.put('message',e.getMessage()); return map; }}

@ControllerAdvice:表明這是一個(gè)全局異常處理類

@ExceptionHandler(UserNotExitException.class):表明標(biāo)注的此方法用于處理UserNotExitException異常。

@ResponseBody:將返回結(jié)果封裝為json

3.結(jié)果

不管瀏覽器還是其他客戶端發(fā)生該異常都統(tǒng)一得到下圖的響應(yīng)

Springboot異常錯(cuò)誤處理解決方案詳解

方式二:轉(zhuǎn)發(fā)到/error,進(jìn)行自適應(yīng)響應(yīng)效果處理

@ControllerAdvicepublic class MyExceptionHandler { @ExceptionHandler(UserNotExitException.class) public String userNotExitExceptionHandler(Exception e, HttpServletRequest request){ Map<String,Object> map = new HashMap<>(); request.setAttribute('javax.servlet.error.status_code',500); map.put('code','user.notexit'); map.put('message','用戶出錯(cuò)了'); return 'forward:/error'; }}

將響應(yīng)轉(zhuǎn)發(fā)到 /error,讓springboot幫我們生成自適應(yīng)效果。但是必須注意,一定要設(shè)置錯(cuò)誤狀態(tài)碼(如代碼中標(biāo)黃色的那一句代碼)。不設(shè)置的話springboot就不會(huì)進(jìn)入定制錯(cuò)誤頁(yè)面的解析流程。設(shè)置了之后springboot就會(huì)到templates/error/錯(cuò)誤狀態(tài)碼.html頁(yè)面處理。

注意:此方式瀏覽器訪問(wèn)發(fā)生錯(cuò)誤不再響應(yīng)的是json數(shù)據(jù)了,而是對(duì)于的錯(cuò)誤響應(yīng)網(wǎng)頁(yè)。

Springboot異常錯(cuò)誤處理解決方案詳解

其他客戶端訪問(wèn)響應(yīng)的是json數(shù)據(jù),但是響應(yīng)的json數(shù)據(jù)中沒(méi)有我們map中put的數(shù)據(jù)。

Springboot異常錯(cuò)誤處理解決方案詳解

方式三:通過(guò)DefaultErrorAttribute

1.在異常處理器類中將響應(yīng)的json數(shù)據(jù)封裝到map中,然后再將map放到請(qǐng)求域中

@ControllerAdvicepublic class MyExceptionHandler { @ExceptionHandler(UserNotExitException.class) public String userNotExitExceptionHandler(Exception e, HttpServletRequest request){ Map<String,Object> map = new HashMap<>(); request.setAttribute('javax.servlet.error.status_code',500); map.put('code','user.notexit'); map.put('message','用戶出錯(cuò)了'); request.setAttribute('ext',map); return 'forward:/error'; }}

2.編寫錯(cuò)誤屬性類:新建一個(gè)類繼承DefaultErrorAttribute類,并重寫其中的getErrorAttributes方法

@Componentpublic class MyErrorAttributes extends DefaultErrorAttributes { @Override public Map<String, Object> getErrorAttributes(WebRequest webRequest, boolean includeStackTrace) { Map<String, Object> map = super.getErrorAttributes(webRequest, includeStackTrace); map.put('company','atguigu'); Map<String, Object> ext = (Map<String, Object>) webRequest.getAttribute('ext', 0); map.put('ext',ext); return map; }}

注意:

(1).必須將錯(cuò)誤屬性類添加到spring容器中。

(2).第7行標(biāo)黃那段代碼的作用是獲取異常處理類中的map。其中最后的參數(shù)0,是從request域中取出數(shù)據(jù)“ext”。若要從session域中取數(shù)據(jù),則將該參數(shù)設(shè)置為1.(0是從request域獲取數(shù)據(jù),1是從session域中獲取數(shù)據(jù))

(3).錯(cuò)誤屬性類中返回的map中的所有內(nèi)容,頁(yè)面都可以獲取到。

總結(jié):

此方式最好,當(dāng)瀏覽器訪問(wèn)發(fā)生錯(cuò)誤時(shí),會(huì)響應(yīng)對(duì)應(yīng)的錯(cuò)誤響應(yīng)頁(yè)面,當(dāng)其他客戶端訪問(wèn)發(fā)生錯(cuò)誤時(shí)也會(huì)響應(yīng)我們定制的json數(shù)據(jù)。

瀏覽器響應(yīng):

Springboot異常錯(cuò)誤處理解決方案詳解

其他客戶端響應(yīng):

Springboot異常錯(cuò)誤處理解決方案詳解

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Spring
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日韩在线二区| 国产精品成人自拍| 欧美国产偷国产精品三区| 国产精品videossex| 国产精品片aa在线观看| 国产精品日本一区二区不卡视频| 国产亚洲精aa在线看| 国产欧美丝祙| 国产精品久久久久久久久久妞妞 | 91精品推荐| 欧洲在线一区| 婷婷精品进入| 天堂va蜜桃一区二区三区| 亚洲在线观看| 亚洲区国产区| 日本aⅴ免费视频一区二区三区| 日本久久二区| 国产精品极品| 激情综合五月| 久久婷婷av| 午夜在线精品| 日韩成人精品一区二区三区 | 日韩一区电影| 99国产精品久久久久久久成人热| 亚洲一区日韩| 天堂va在线高清一区| 国产精品亚洲综合久久| 免费精品一区| 亚洲成人av观看| 视频一区二区三区中文字幕| 国产亚洲一区二区三区啪| 在线手机中文字幕| 亚洲女同中文字幕| 亚洲精品乱码日韩| 久久99蜜桃| 四虎4545www国产精品| 丝袜国产日韩另类美女| 国产欧美91| 秋霞影院一区二区三区| 亚洲视频国产精品| 麻豆一区在线| 国产综合亚洲精品一区二| 亚洲伊人精品酒店| 麻豆国产精品一区二区三区| 欧美午夜精彩| 91嫩草精品| 欧美亚洲日本精品| 首页国产欧美日韩丝袜| 久久的色偷偷| 激情久久久久久久| 欧美精品福利| 婷婷成人在线| 久久国产视频网| 久久裸体视频| 国产欧美精品| 99riav1国产精品视频| 国产精品久久久久久久久久白浆| 久久精品影视| 在线观看一区| 国产v日韩v欧美v| 视频一区二区三区在线| 国产91欧美| 蜜桃传媒麻豆第一区在线观看| 国内在线观看一区二区三区| 视频一区欧美日韩| av中文字幕在线观看第一页 | 午夜精品免费| 国产精品入口久久| 亚洲一区日本| 精品亚洲a∨| 亚洲精选av| 国产在线|日韩| 免费视频一区二区三区在线观看| 亚洲欧洲一区二区天堂久久| 久久免费精品| 亚洲精品伦理| 亚洲国产成人精品女人| 久久字幕精品一区| 亚洲精品伊人| 久久中文字幕av| 麻豆精品在线视频| 亚洲青青久久| 亚洲欧美日韩国产| 欧洲亚洲一区二区三区| 国产精品一区二区三区www| 国产一区二区高清| 日韩不卡免费高清视频| 你懂的亚洲视频| 亚洲精品乱码久久久久久蜜桃麻豆| 久久久久亚洲| 成人亚洲精品| 国产精品视频3p| 日本午夜精品| 999在线观看精品免费不卡网站| 精精国产xxxx视频在线播放| 麻豆国产欧美日韩综合精品二区| 日韩精品a在线观看91| 在线亚洲一区| 欧美性感美女一区二区| 高清在线一区| 免费一区二区三区在线视频| 91国内精品| 蜜桃视频一区二区| 视频一区二区中文字幕| 国产一区导航| 亚洲在线电影| 性欧美长视频| 在线亚洲免费| 亚洲综合日韩| 国产精品婷婷| 99xxxx成人网| 久久一二三区| 美国三级日本三级久久99| 在线一区视频| 免费人成精品欧美精品| 日韩黄色大片| 亚洲精品一区二区在线播放∴| 蜜桃伊人久久| 99国产精品| 亚洲欧美日韩一区在线观看| 狠狠久久婷婷| 宅男噜噜噜66国产日韩在线观看| 久久婷婷一区| 蜜桃国内精品久久久久软件9| zzzwww在线看片免费| 首页国产精品| 福利在线免费视频| av在线日韩| 欧美日韩一区二区三区视频播放| 久久中文欧美| 日韩成人精品一区| 日韩欧美二区| 久久久人人人| 黑丝美女一区二区| 中文亚洲欧美| 一区二区三区国产盗摄| 日本在线视频一区二区| 亚洲人成精品久久久| 青青青国产精品| 欧美激情网址| 天堂√中文最新版在线| 99久久www免费| 国产亚洲在线| 日韩av午夜在线观看| 91精品国产经典在线观看| 国产欧美日韩精品一区二区免费| 免费精品一区| 日韩不卡免费高清视频| 图片区亚洲欧美小说区| 男人的天堂亚洲一区| 日韩超碰人人爽人人做人人添| 国产无遮挡裸体免费久久| 精品国产18久久久久久二百| 激情久久久久久久| 亚洲人妖在线| 欧美精品aa| 播放一区二区| 亚洲色图综合| 精品欧美视频| 欧美成人基地| 日韩专区一卡二卡| 国产精品国码视频| 精品欧美一区二区三区在线观看| 红桃视频国产精品| 日韩精彩视频在线观看| 黄色精品视频| 亚洲女同一区| 国产日韩高清一区二区三区在线 | xxxxx性欧美特大| 蜜桃成人av| 日本亚洲欧洲无免费码在线| 蜜桃精品视频| 亚洲精华国产欧美| 国产美女视频一区二区| 久久黄色影院| 亚洲精品系列| 国产aa精品| 爽好多水快深点欧美视频| 国产精品66| 午夜欧美精品久久久久久久| 日韩高清在线不卡| 国产 日韩 欧美一区| 一区二区三区午夜视频| 日韩av在线中文字幕| 麻豆久久精品| 精品一区二区三区四区五区| 好看不卡的中文字幕| 国产精品sss在线观看av| 欧美成人精品| 国产激情久久| 久久不射网站| 亚洲精品第一| 欧美成人基地 | 国产高清不卡| 免费精品视频最新在线| 91视频精品| 日韩超碰人人爽人人做人人添| 亚洲91精品| 国产精品mm| 视频一区日韩精品|