您当前的位置: 首页 >  Java

科技D人生

暂无认证

  • 0浏览

    0关注

    1550博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Java基础学习总结(168)——为什么推荐在RPC的接口中入参和出参都不要使用枚举

科技D人生 发布时间:2020-12-31 09:43:55 ,浏览量:0

前言:

为什么推荐在RPC的接口中入参和出参都不要使用枚举。最近,我们的线上环境出现了一个问题,线上代码在执行过程中抛出了一个IllegalArgumentException,分析堆栈后,发现最根本的的异常是以下内容:


java.lang.IllegalArgumentException: 

No enum constant com.a.b.f.m.a.c.AType.P_M

大概就是以上的内容,看起来还是很简单的,提示的错误信息就是在AType这个枚举类中没有找到P_M这个枚举项。于是经过排查,我们发现,在线上开始有这个异常之前,该应用依赖的一个下游系统有发布,而发布过程中是一个API包发生了变化,主要变化内容是在一个RPC接口的Response返回值类中的一个枚举参数AType中增加了P_M这个枚举项。但是下游系统发布时,并未通知到我们负责的这个系统进行升级,所以就报错了。我们来分析下为什么会发生这样的情况。

一、问题重现

首先,下游系统A提供了一个二方库的某一个接口的返回值中有一个参数类型是枚举类型。

一方库指的是本项目中的依赖

二方库指的是公司内部其他项目提供的依赖

三方库指的是其他组织、公司等来自第三方的依赖

public interface AFacadeService {
    public AResponse doSth(ARequest aRequest);

}

public Class AResponse{
    private Boolean success;
  
关注
打赏
1662604032
查看更多评论
立即登录/注册

微信扫码登录

0.0419s