java異常處理攔截器詳情
使用異常處理攔截器,可以不用寫那么多try…catch…。
我有個功能,就是前端提交短信內(nèi)容到后端,后端進(jìn)行一系列的處理,其中是要將短信內(nèi)容提交到公共短信接口。微服務(wù)框架,公共短信接口是另外一個服務(wù)。這樣子就會有一個隱患,假如這個服務(wù)不開,或者因?yàn)榫W(wǎng)絡(luò)原因無法訪問,怎么辦?
可以原子操作,也可以重新提交啥的,不管怎么搞,錯誤提示是避免不了的。問題是,系統(tǒng)赤裸裸的貼代碼的錯誤提示方式,極不友好。應(yīng)當(dāng)捕獲這個錯誤,然后改用較為友好的內(nèi)容進(jìn)行提示。
最原始的辦法,可以層層try…catch…,從service一直到controller這里返回給前端。但未免太繁瑣,感覺很low。作為程序員,不應(yīng)當(dāng)這么機(jī)械。
參照網(wǎng)上辦法,在controller這里設(shè)置一個異常處理攔截器:
@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;
}
}
這個ResultBody是一個自定義的對象,前端根據(jù)其返回的編號等判斷是否成功。
@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ù)這個code,來判斷成功與否。
到此這篇關(guān)于java異常處理攔截器詳情的文章就介紹到這了,更多相關(guān)java異常處理攔截器內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java Class 解析器實(shí)現(xiàn)方法示例
這篇文章主要通過對class文件的分析,介紹了Java Class 解析器實(shí)現(xiàn)方法示例,具有一定參考價值,需要的朋友可以了解下。2017-09-09
關(guān)于Spring的AnnotationAwareAspectJAutoProxyCreator類解析
這篇文章主要介紹了關(guān)于Spring的AnnotationAwareAspectJAutoProxyCreator類解析,Spring是一個開源免費(fèi)的框架 , 容器,是一個輕量級的框架 ,需要的朋友可以參考下2023-05-05
詳解如何為SpringBoot Web應(yīng)用的日志方便追蹤
在Web應(yīng)用程序領(lǐng)域,有效的請求監(jiān)控和可追溯性對于維護(hù)系統(tǒng)完整性和診斷問題至關(guān)重要,SpringBoot是一種用于構(gòu)建Java應(yīng)用程序的流行框架,在本文中,我們探討了在SpringBoot中向日志添加唯一ID的重要性,需要的朋友可以參考下2023-11-11
SpringAOP實(shí)現(xiàn)自定義接口權(quán)限控制
本文主要介紹了SpringAOP實(shí)現(xiàn)自定義接口權(quán)限控制,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-11-11

