zoukankan      html  css  js  c++  java
  • 枚举类中枚举值不存在.valueOf(enum) 抛异常处理

    开发过程中,经常使用枚举类操作一些分支情况,但是当入参在枚举类中找不到时,就会抛异常,没办法进行 if(lbAppHomeOperator == null) 操作,这时我们可以使用   Enums.getIfPresent(XXXEnum.class, strEnum).orNull();  进行处理。

    *****业务代码:

    1、枚举类

    /**
     * @author D-L
     * @program: ella-server
     * @description: 听书首页发布操作
     * @date 2021-01-12 11:24:18
     */
    @Slf4j
    public enum PublishLbAppHomeOperator {
    
    
        APPCN {
            @Override
            public void apply(LbListenMapper lbListenMapper) {
                lbListenMapper.publishLbHomePageAppCn();
                log.info("国内app听书首页发布成功");
            }
        },
    
        APPOTHER {
            @Override
            public void apply(LbListenMapper lbListenMapper) {
                lbListenMapper.publishLbHomePageAppOther();
                log.info("其他地区app听书首页发布成功");
            }
        },
    
        HDCN {
            @Override
            public void apply(LbListenMapper lbListenMapper) {
                lbListenMapper.publishLbHomePageHdCn();
                log.info("国内HD听书首页发布成功");
            }
        },
    
        HDOTHER {
            @Override
            public void apply(LbListenMapper lbListenMapper) {
                lbListenMapper.publishLbHomePageHdOther();
                log.info("其他地区HD听书首页发布成功");
            }
        },
    
        GUSHIJI {
            @Override
            public void apply(LbListenMapper lbListenMapper) {
                lbListenMapper.publishLbHomePageGushiji();
                log.info("故事机听书首页发布成功");
            }
        };
    
        public abstract void apply(LbListenMapper lbListenMapper);
    }

    2、提供一个 getIfPresent 判断方法

     /**
         * 判断枚举类中 是否存在传入的枚举值
         * @param operatorEnum
         * @return
         */
        private PublishLbAppHomeOperator getIfPresent(String operatorEnum) {
            return Enums.getIfPresent(PublishLbAppHomeOperator.class, operatorEnum).orNull();
        }

    3、具体调用

     if(getIfPresent(operatorEnum) == null){
           log.info("platformCode , siteCode --- check param error :{} , {}", platformCode , siteCode);
           response.setCodeAndMessage(PARAM_ERROR_CODE, PARAM_ERROR_DESC);
           return;
     }
  • 相关阅读:
    [debug] 解决在C++编写过程中的“找到一个或多个多重定义的符号”
    调试事件的收集
    [ida]查看某一函数在程序中被谁引用
    IDA+Windbg IDA+OD 连动调试插件
    一个简单的创建被调试进程的案例
    LOAD_DLL_DEBUG_EVENT 时读取 DllName
    【编译系统01】编译器
    [动态规划]石子合并问题
    xBIM 基础15 IFC导出Excel报表
    xBIM 基础14 使用LINQ实现最佳性能(优化查询)
  • 原文地址:https://www.cnblogs.com/dongl961230/p/14280780.html
Copyright © 2011-2022 走看看