1. 程式人生 > >關於跨系統Dubbo介面的異常處理

關於跨系統Dubbo介面的異常處理

場景

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);