错误处理

    为了保证编码风格的一致性,推荐统一使用ServiceException

    SOP支持国际化消息。通过Request对象中的getLocale()来决定具体返回那种语言,客户端通过设置Accept-Language头部来决定返回哪种语言,中文是zh,英文是en。

    以story服务为例,假设我们要对商品模块进行设置,步骤如下:

    • resource/i18n/isp目录下新建goods_error_zh_CN.properties属性文件

    属性文件的文件名有规律, i18n/isp/goods_error 表示模块路径, _zh_CN.properties 表示中文错误消息。如果要使用英文错误,则新建一个goods_error_en.properties即可。

    • 在goods_error_zh_CN.properties中配置错误信息
    1. # 商品名字不能为空
    2. isp.goods_error_100=\u5546\u54C1\u540D\u79F0\u4E0D\u80FD\u4E3A\u7A7A

    接下来是把属性文件加载到国际化容器当中。

    • 添加国际化配置,在OpenServiceConfig中的static块中添加,代码如下:
    1. // 按模块来定义异常消息,团队开发可以分开进行
    2. public enum GoodsErrorEnum {
    3. NO_GOODS_NAME("100"),
    4. ;
    5. private ServiceErrorMeta errorMeta;
    6. this.errorMeta = new ServiceErrorMeta("isp.goods_error_", subCode);
    7. public ServiceErrorMeta getErrorMeta() {
    8. return errorMeta;
    9. }
    10. }

    接下来就可以使用了

    直接放进getException(Object… params)方法参数中,因为是可变参数,可随意放。