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()); 将正确引用到业务错误国际化资源中的信息 |