最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

spring-boot中異常的處理

2021-09-23 09:06 作者:向上生長之路  | 我要投稿

使用spring-boot開發(fā)過程中,調(diào)用接口時(shí)常遇到各種報(bào)錯(cuò)問題,如果項(xiàng)目一開始沒有做完整的異常架構(gòu)設(shè)計(jì),那么對(duì)于問題排查起來就很是耗費(fèi)時(shí)間。我們可以通過spring提供的異常捕獲機(jī)制,在項(xiàng)目架構(gòu)設(shè)計(jì)階段就做好各種異常的判斷,包括日志記錄,詳細(xì)的堆棧信息等,統(tǒng)一http響應(yīng)的報(bào)文格式返回給前端,這樣既能避免泄露私密信息以及公司所用的技術(shù)棧,又方便我們排查問題~

關(guān)于異常處理的spring官方文檔說明:https://docs.spring.io/spring-framework/docs/5.3.6/reference/html/web.html#mvc-ann-exceptionhandler

下面來看下在spring-boot中兩種主要的異常處理方式

局部異常的處理

通過@ExceptionHandler注解標(biāo)記在Controller的方法中,來做Controller范圍內(nèi)的異常捕獲處理

ExceptionHandler詳細(xì)方法參數(shù)說明:https://docs.spring.io/spring-framework/docs/5.3.6/reference/html/web.html#mvc-ann-exceptionhandler-args

示例代碼:https://github.com/netbuffer/spring-boot-demo/blob/master/src/main/java/cn/netbuffer/springboot/demo/controller/RaiseExceptionTestController.java


啟動(dòng)工程,訪問測試接口來引發(fā)一個(gè)類型轉(zhuǎn)換錯(cuò)誤測試

GET /raise/exception/test/long?id=abc



此時(shí)可以看到已經(jīng)按照我們異常處理器中封裝的報(bào)文格式返回響應(yīng)了

全局異常的處理

spring中可以通過@ControllerAdvice注解來攔截所有Controller,這時(shí)就可以將@ExceptionHandler方法聲明寫到這里,來實(shí)現(xiàn)全局的異常處理了

spring關(guān)于ControllerAdvice的詳細(xì)使用說明:https://docs.spring.io/spring-framework/docs/5.3.6/reference/html/web.html#mvc-ann-controller-advice

示例代碼:https://github.com/netbuffer/spring-boot-demo/blob/master/src/main/java/cn/netbuffer/springboot/demo/controller/CustomControllerAdvice.java


注意先注釋局部異常處理器,再訪問接口引發(fā)異常來測試下結(jié)果,屏蔽局部異常處理器的干擾




可以看到我們的全局異常處理器已經(jīng)生效了



那么局部異常處理器和全局異常處理器同時(shí)存在的時(shí)候會(huì)是什么樣的結(jié)果呢?通過我實(shí)際測試發(fā)現(xiàn),局部異常處理器優(yōu)先級(jí)會(huì)高于全局異常處理器,也就是說,當(dāng)兩者同時(shí)存在的時(shí)候,只會(huì)執(zhí)行局部的異常處理邏輯~

最后要說下,spring官方建議在使用全局異常處理的時(shí)候,通過繼承ResponseEntityExceptionHandler,來按照需要重寫對(duì)應(yīng)的方法,大部分http相關(guān)異常情況ResponseEntityExceptionHandler已經(jīng)幫我們處理的很好了


ResponseEntityExceptionHandler的官方說明:https://docs.spring.io/spring-framework/docs/5.3.6/javadoc-api/org/springframework/web/servlet/mvc/method/annotation/ResponseEntityExceptionHandler.html

示例代碼:


ResponseEntityExceptionHandler相關(guān)http接口調(diào)用異常處理方法





spring-boot中異常的處理的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
新丰县| 舟山市| 鄂伦春自治旗| 刚察县| 灵丘县| 化隆| 克拉玛依市| 来凤县| 鱼台县| 库伦旗| 依兰县| 应用必备| 东宁县| 桐庐县| 甘洛县| 张家界市| 淮阳县| 科技| 新乡市| 行唐县| 马龙县| 乌拉特后旗| 五台县| 天长市| 莆田市| 察哈| 赞皇县| 衡南县| 沾益县| 乐业县| 文安县| 嘉祥县| 商水县| 玉门市| 永德县| 晋城| 清丰县| 呼和浩特市| 洛浦县| 临武县| 如东县|