關於跨系統Dubbo介面的異常處理
阿新 • • 發佈:2019-02-07
場景
A系統執行使用者登出時,需要呼叫B系統的一個清除使用者資料的介面, 同時需要B系統向C系統呼叫登出介面,根據C系統的登出結果及 B系統的本身系統業務執行結果,根據執行情況返回給A系統。
分塊異常處理
對於不同系統的介面層呼叫,要分開用try-catch進行異常捕獲,
並列印相關日誌資訊,同時在列印日誌資訊時,一定要把異常列印到日誌中,
方便出現問題時,精確定位問題。
//C系統端業務
try {
if(eleState.equals("1")){
//啟用
//a.呼叫C系統端介面
flag = terminalsIntf.enableTerminal(terminalId);
if (!flag){
msg = "C系統端調取啟用介面失敗!";
log.error("C系統端調取啟用介面失敗!");
}
}else if(eleState.equals("0")){
//禁用
//a.呼叫C系統端介面
flag = terminalsIntf.disableTerminal(terminalId);
if(!flag){
msg = "C系統端調取禁用介面失敗!";
log.error("C系統端調取禁用介面失敗!" );
}
}else{
msg = "A系統端引數傳入有誤!";
log.error("A系統端引數傳入有誤!");
}
} catch (Exception e1) {
msg = "C系統端介面呼叫異常!";
log.error("C系統端介面呼叫異常!",e1);
}
//B系統端業務
try {
if(flag){
boolean result = elementBasicInfoMapper.changeEleStateByTerminalId(terminalId,eleState);
if (!result){
msg = "B系統端呼叫修改介面失敗!";
log.error("B系統端呼叫修改介面失敗!");
}
}
} catch (Exception e2) {
msg = "B系統端介面呼叫異常!";
log.error("B系統端介面呼叫異常!",e2);
}
常用日誌工具類
日誌級別的控制
info級別
正常執行結果,一般採用info級別的日誌生成log.info();
error級別
呼叫介面失敗,拋異常時,一般採用error級別的日誌生成log.error(“自定義異常資訊”,e);