java異常處理攔截器詳情
使用異常處理攔截器,可以不用寫那么多try…catch…。
我有個功能,就是前端提交短信內(nèi)容到后端,后端進行一系列的處理,其中是要將短信內(nèi)容提交到公共短信接口。微服務(wù)框架,公共短信接口是另外一個服務(wù)。這樣子就會有一個隱患,假如這個服務(wù)不開,或者因為網(wǎng)絡(luò)原因無法訪問,怎么辦?
可以原子操作,也可以重新提交啥的,不管怎么搞,錯誤提示是避免不了的。問題是,系統(tǒng)赤裸裸的貼代碼的錯誤提示方式,極不友好。應(yīng)當捕獲這個錯誤,然后改用較為友好的內(nèi)容進行提示。
最原始的辦法,可以層層try…catch…,從service一直到controller這里返回給前端。但未免太繁瑣,感覺很low。作為程序員,不應(yīng)當這么機械。
參照網(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) {
//鑒別一下是否為目標異常
return ResultBody.failed().msg("訪問短信接口失敗,請確認相關(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)文章
一篇文章帶你入門Springboot整合微信登錄與微信支付(附源碼)
微信支付是騰訊公司的支付業(yè)務(wù)品牌,微信支付商戶平臺支持線下場所、公眾號、小程序、PC網(wǎng)站、APP、企業(yè)微信等經(jīng)營場景快速接入微信支付。這里一篇文章帶你入門!2021-06-06
Spring JPA聯(lián)表查詢之OneToOne源碼詳解
這篇文章主要為大家介紹了Spring JPA聯(lián)表查詢之OneToOne源碼詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-04-04
Springcloud ribbon負載均衡算法實現(xiàn)
這篇文章主要介紹了Springcloud ribbon負載均衡算法實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-04-04
Java把多個對象的list的數(shù)據(jù)合并的方法示例
在Java中合并多個List可以使用遍歷、Stream API或Apache Commons Collections,通過遍歷各個List并將元素添加到新List實現(xiàn)合并,Java 8提供了Stream API,使用Stream.of()和flatMap()可以簡潔地合并List,文中給出了多種方法示例,需要的朋友可以參考下2024-09-09
springboot?@PostConstruct無效的解決
這篇文章主要介紹了springboot?@PostConstruct無效的解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-11-11

