关于跨系统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);
}

常用日志工具类

Log4j,slf4j
两者的异同:详细信息见下博文
http://blog.csdn.net/u014344668/article/details/73277760

日志级别的控制

info级别

正常执行结果,一般采用info级别的日志生成log.info();

error级别

调用接口失败,抛异常时,一般采用error级别的日志生成log.error(“自定义异常信息”,e);

你可能感兴趣的:(异常处理)