ROP业务逻辑异常定义输出?

kelloKitty 2012-06-18
ROP目前对错误异常报文的输出定义是系统级,框架级别的异常输出,有没有针对业务逻辑异常的输出呢?如果业务逻辑接口发生异常了,是在UserRestService捕获然后转换成ErrorResponse吗?
stamen 2012-06-18
业务级异常的定义默认在
i18n/rop/ropError的国际化资源中,可以通过
<rop:annotation-driven
     ext-error-base-name="i18n/rop/sampleRopError"/>

这里就指定了一个自定义的业务国际化资源,在rop-Sample中,其错误国际化资源如下:
引用
###ISV 自定义错误
##########################################################################################################################
isv.user-add-service-error\:USER_NAME_RESERVED= {0} is reserved,please choose other user name.
##########################################################################################################################


在业务服务方法中通过ServiceErrorResponse类引用这个错误信息:
    @ServiceMethod(value = "user.add", version = "1.0")//② Let this method service the sample.user.add method
    public RopResponse addUser(CreateUserRequest request) {
        if (reservesUserNames.contains(request.getUserName())) {  
   
            //这儿引用了业务错误国际化信息
            return new ServiceErrorResponse(
                    request.getRequestContext().getMethod(), USER_NAME_RESERVED,
                    request.getRequestContext().getLocale(), request.getUserName());
        } else {
            CreateUserResponse response = new CreateUserResponse();
            //add creaet new user here...
            response.setCreateTime("20120101010101");
            response.setUserId("1");
            return response;
        }
    }

这儿构造的ServiceErrorResponse即对应:
isv.user-add-service-error:USER_NAME_RESERVED
,即业务错误码键的格式为:

isv.<method>:<业务错误码>

所以
 new ServiceErrorResponse(
                    request.getRequestContext().getMethod(), USER_NAME_RESERVED,
                    request.getRequestContext().getLocale(), request.getUserName());

将正确引用到业务错误国际化资源中的信息
Global site tag (gtag.js) - Google Analytics