java異常處理攔截器詳情
使用異常處理攔截器,可以不用寫那么多try…catch…。
我有個(gè)功能,就是前端提交短信內(nèi)容到后端,后端進(jìn)行一系列的處理,其中是要將短信內(nèi)容提交到公共短信接口。微服務(wù)框架,公共短信接口是另外一個(gè)服務(wù)。這樣子就會(huì)有一個(gè)隱患,假如這個(gè)服務(wù)不開,或者因?yàn)榫W(wǎng)絡(luò)原因無法訪問,怎么辦?
可以原子操作,也可以重新提交啥的,不管怎么搞,錯(cuò)誤提示是避免不了的。問題是,系統(tǒng)赤裸裸的貼代碼的錯(cuò)誤提示方式,極不友好。應(yīng)當(dāng)捕獲這個(gè)錯(cuò)誤,然后改用較為友好的內(nèi)容進(jìn)行提示。
最原始的辦法,可以層層try…catch…,
從service
一直到controller
這里返回給前端。但未免太繁瑣,感覺很low
。作為程序員,不應(yīng)當(dāng)這么機(jī)械。
參照網(wǎng)上辦法,在controller
這里設(shè)置一個(gè)異常處理攔截器:
@RestController @RequestMapping("sms/order") public class DzSmsSendOrderController { 。。。 @ExceptionHandler(value = { RuntimeException.class}) public ResultBody handleRuntimeException(Exception ex) throws Exception { if (ex.getMessage().indexOf("project-sms-api") != -1) { //鑒別一下是否為目標(biāo)異常 return ResultBody.failed().msg("訪問短信接口失敗,請確認(rèn)相關(guān)服務(wù)是否已開啟"); } else throw ex; } }
這個(gè)ResultBody
是一個(gè)自定義的對(duì)象,前端根據(jù)其返回的編號(hào)等判斷是否成功。
@ApiModel(value = "響應(yīng)結(jié)果") public class ResultBody<T> implements Serializable { 。。。 public static ResultBody failed() { return new ResultBody().code(ErrorCode.FAIL.getCode()).msg(ErrorCode.FAIL.getMessage()); } @Override public String toString() { return "ResultBody{" + "code=" + code + ", message='" + message + '\'' + ", path='" + path + '\'' + ", data=" + data + ", httpStatus=" + httpStatus + ", extra=" + extra + ", timestamp=" + timestamp + '}'; } } public enum ErrorCode { OK(0, "success"), FAIL(1000, "fail"), ALERT(1001, "alert"), }
前端就根據(jù)這個(gè)code
,來判斷成功與否。
到此這篇關(guān)于java異常處理攔截器詳情的文章就介紹到這了,更多相關(guān)java異常處理攔截器內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java Class 解析器實(shí)現(xiàn)方法示例
這篇文章主要通過對(duì)class文件的分析,介紹了Java Class 解析器實(shí)現(xiàn)方法示例,具有一定參考價(jià)值,需要的朋友可以了解下。2017-09-09關(guān)于Spring的AnnotationAwareAspectJAutoProxyCreator類解析
這篇文章主要介紹了關(guān)于Spring的AnnotationAwareAspectJAutoProxyCreator類解析,Spring是一個(gè)開源免費(fèi)的框架 , 容器,是一個(gè)輕量級(jí)的框架 ,需要的朋友可以參考下2023-05-05詳解如何為SpringBoot Web應(yīng)用的日志方便追蹤
在Web應(yīng)用程序領(lǐng)域,有效的請求監(jiān)控和可追溯性對(duì)于維護(hù)系統(tǒng)完整性和診斷問題至關(guān)重要,SpringBoot是一種用于構(gòu)建Java應(yīng)用程序的流行框架,在本文中,我們探討了在SpringBoot中向日志添加唯一ID的重要性,需要的朋友可以參考下2023-11-11SpringAOP實(shí)現(xiàn)自定義接口權(quán)限控制
本文主要介紹了SpringAOP實(shí)現(xiàn)自定義接口權(quán)限控制,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-11-11