已解决java.lang.EnumConstantNotPresentException: 枚举常量不存在异常的正确解决方法,亲测有效!!! 悠悠 2024-05-11 09:24 29阅读 0赞 已解决java.lang.EnumConstantNotPresentException: 枚举常量不存在异常的正确解决方法,亲测有效!!! **目录** 问题分析 场景描述 报错原因 解决思路 解决方法 核查和更新枚举引用 异常处理添加 总结 博主v:XiaoMing\_Java -------------------- 在Java开发中,`java.lang.EnumConstantNotPresentException`是一个相对少见的异常,通常发生在程序尝试访问一个未定义的枚举常量时。此异常通常是由于代码中的枚举定义与使用不一致导致的。本文将详细探讨此异常的发生原因,并提供实际的解决方案,帮助开发者有效解决此类问题。 ### 问题分析 ### `EnumConstantNotPresentException`异常表示指定的枚举类型中不存在指定的常量。这种情况可能是因为枚举被修改后,代码中的某些部分没有得到相应的更新。 #### 场景描述 #### 考虑以下Java程序,其中定义了一个枚举类型`Day`和一个方法,该方法依赖于枚举的值: public enum Day { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY; } public class TestEnum { public static void main(String[] args) { printDay(Day.valueOf("HOLIDAY")); } private static void printDay(Day day) { System.out.println(day); } } 在这个例子中,尝试使用`Day.valueOf("HOLIDAY")`将抛出`EnumConstantNotPresentException`,因为`HOLIDAY`不是`Day`枚举中定义的一个有效常量。 #### 报错原因 #### 此异常的主要原因是: 1. **枚举常量不存在**:尝试通过`valueOf`方法或其他方式引用一个未定义的枚举常量。 2. **代码和枚举定义不同步**:枚举可能在某个版本中被更改,而使用它的代码部分未及时更新。 ### 解决思路 ### 解决`EnumConstantNotPresentException`的关键在于确保所有对枚举常量的引用都是有效的。具体方法包括: 1. **核查所有枚举引用**:确认所有使用枚举的地方引用的都是枚举定义中存在的常量。 2. **更新和维护枚举使用**:当修改枚举定义时,同步更新所有相关的代码。 3. **异常处理**:对可能抛出此异常的操作添加异常处理逻辑,以避免程序崩溃。 ### 解决方法 ### #### 核查和更新枚举引用 #### 1. **审查代码**:检查所有使用枚举的代码段,确保所有引用的常量都在枚举定义中存在。 2. **修改不一致的枚举引用**: * 如果引用的枚举常量确实应该存在但被误删,考虑在枚举中重新添加该常量。 * 如果该引用已不再适用,更新或删除这些引用。 #### 异常处理添加 #### 对于使用`valueOf`等可能抛出`EnumConstantNotPresentException`的方法,添加异常处理逻辑: public static void main(String[] args) { try { printDay(Day.valueOf("HOLIDAY")); } catch (IllegalArgumentException e) { System.err.println("错误:指定的枚举常量不存在。" + e.getMessage()); } } private static void printDay(Day day) { System.out.println(day); } ### 总结 ### `java.lang.EnumConstantNotPresentException`通常由于代码尝试访问一个未定义的枚举常量时。此异常通常是由于代码中的枚举定义与使用不一致导致的。 **以上是此问题报错原因的解决方法,欢迎评论区留言讨论是否能解决,**如果本文对你有帮助 欢迎**关注****、点赞 、收藏 、评论, 博主才有动力持续记录遇到的问题!!!** ## **博主v:XiaoMing\_Java** ## > **?作者简介:**嗨,大家好,我是**[小明(小明Java问道之路)][Java]**,互联网大厂后端研发专家,2022博客之星TOP3 / 博客专家 / CSDN后端内容合伙人、InfoQ(极客时间)签约作者、阿里云签约博主、全网 6 万粉丝博主。 > > -------------------- > > ? **文末获取联系** ? **?? 精彩专栏推荐订阅收藏 ??** > > <table> > <tbody> > <tr> > <td> <p><span style="color:#fe2c24;"><strong>专栏系列(点击解锁)</strong></span></p> </td> > <td> <p><span style="color:#fe2c24;"><strong>学习路线(点击解锁)</strong></span></p> </td> > <td> <p><span style="color:#fe2c24;"><strong>知识定位</strong></span></p> </td> > </tr> > <tr> > <td> <p><span style="color:#fe2c24;">?<a href="https://blog.csdn.net/fmc_wbl/category_12131269.html" title="Redis从入门到精通与实战" rel="nofollow">Redis从入门到精通与实战</a>?</span></p> </td> > <td> <p><span style="color:#fe2c24;"><a href="https://blog.csdn.net/fmc_wbl/category_12131269.html" title="Redis从入门到精通与实战" rel="nofollow">Redis从入门到精通与实战</a></span></p> </td> > <td> <p><span style="color:#fe2c24;"><a href="https://blog.csdn.net/fmc_wbl/category_12131269.html" title="围绕原理源码讲解Redis面试知识点与实战" rel="nofollow">围绕原理源码讲解Redis面试知识点与实战</a></span></p> </td> > </tr> > <tr> > <td> <p><span style="color:#fe2c24;">?<a href="https://blog.csdn.net/fmc_wbl/category_12083377.html" title="MySQL从入门到精通" rel="nofollow">MySQL从入门到精通</a>?</span></p> </td> > <td> <p><span style="color:#fe2c24;"><a href="https://blog.csdn.net/fmc_wbl/category_12083377.html" title="MySQL从入门到精通" rel="nofollow">MySQL从入门到精通</a></span></p> </td> > <td><span style="color:#fe2c24;"><a href="https://blog.csdn.net/fmc_wbl/category_12083377.html" title="全面讲解MySQL知识与企业级MySQL实战" rel="nofollow">全面讲解MySQL知识与企业级MySQL实战</a></span></td> > </tr> > <tr> > <td> <p><span style="color:#fe2c24;">?<a href="https://blog.csdn.net/fmc_wbl/category_11908148.html" title="计算机底层原理" rel="nofollow">计算机底层原理</a>?</span></p> </td> > <td> <p><span style="color:#fe2c24;"><a href="https://blog.csdn.net/fmc_wbl/category_11654596.html" title="深入理解计算机系统CSAPP" rel="nofollow">深入理解计算机系统CSAPP</a></span></p> </td> > <td> <p><span style="color:#fe2c24;"><a href="https://blog.csdn.net/fmc_wbl/category_11654596.html" title="以深入理解计算机系统为基石,构件计算机体系和计算机思维" rel="nofollow">以深入理解计算机系统为基石,构件计算机体系和计算机思维</a></span></p> </td> > </tr> > <tr> > <td> <p><span style="color:#fe2c24;"><a href="https://blog.csdn.net/fmc_wbl/category_12055850.html" title="Linux内核源码解析" rel="nofollow">Linux内核源码解析</a></span></p> </td> > <td> <p><span style="color:#fe2c24;"><a href="https://blog.csdn.net/fmc_wbl/category_12055850.html" title="围绕Linux内核讲解计算机底层原理与并发" rel="nofollow">围绕Linux内核讲解计算机底层原理与并发</a></span></p> </td> > </tr> > <tr> > <td> <p><span style="color:#fe2c24;">?<a href="https://blog.csdn.net/fmc_wbl/category_11363226.html" title="数据结构与企业题库精讲" rel="nofollow">数据结构与企业题库精讲</a>?</span></p> </td> > <td> <p><span style="color:#fe2c24;"><a href="https://blog.csdn.net/fmc_wbl/category_11363226.html" title="数据结构与企业题库精讲" rel="nofollow">数据结构与企业题库精讲</a></span></p> </td> > <td> <p><span style="color:#fe2c24;"><a href="https://blog.csdn.net/fmc_wbl/category_11363226.html" title="结合工作经验深入浅出,适合各层次,笔试面试算法题精讲" rel="nofollow">结合工作经验深入浅出,适合各层次,笔试面试算法题精讲</a></span></p> </td> > </tr> > <tr> > <td> <p><span style="color:#fe2c24;">?<a href="https://blog.csdn.net/fmc_wbl/category_12060700.html" title="互联网架构分析与实战" rel="nofollow">互联网架构分析与实战</a>?</span></p> </td> > <td> <p><span style="color:#fe2c24;"><a href="https://blog.csdn.net/fmc_wbl/category_12057062.html" title="企业系统架构分析实践与落地" rel="nofollow">企业系统架构分析实践与落地</a></span></p> </td> > <td> <p><span style="color:#fe2c24;"><a href="https://blog.csdn.net/fmc_wbl/category_12057062.html" title="行业最前沿视角,专注于技术架构升级路线、架构实践" rel="nofollow">行业最前沿视角,专注于技术架构升级路线、架构实践</a></span></p> </td> > </tr> > <tr> > <td> <p><span style="color:#fe2c24;"><a href="https://blog.csdn.net/fmc_wbl/category_12060638.html" title="互联网企业防资损实践" rel="nofollow">互联网企业防资损实践</a></span></p> </td> > <td> <p><span style="color:#fe2c24;"><a href="https://blog.csdn.net/fmc_wbl/category_12060638.html" title="互联网金融公司的防资损方法论、代码与实践" rel="nofollow">互联网金融公司的防资损方法论、代码与实践</a></span></p> </td> > </tr> > <tr> > <td> <p><span style="color:#fe2c24;">?<a href="https://blog.csdn.net/fmc_wbl/category_12055876.html" title="Java全栈白宝书" rel="nofollow">Java全栈白宝书</a>?</span></p> </td> > <td> <p><span style="color:#fe2c24;"><a href="https://blog.csdn.net/fmc_wbl/category_11931310.html" title="精通Java8与函数式编程" rel="nofollow">精通Java8与函数式编程</a></span></p> </td> > <td> <p><span style="color:#fe2c24;"><a href="https://blog.csdn.net/fmc_wbl/category_11931310.html" title="本专栏以实战为基础,逐步深入Java8以及未来的编程模式" rel="nofollow">本专栏以实战为基础,逐步深入Java8以及未来的编程模式</a></span></p> </td> > </tr> > <tr> > <td></td> > <td> <p><span style="color:#fe2c24;"><a href="https://blog.csdn.net/fmc_wbl/category_8794615.html" title="深入理解JVM" rel="nofollow">深入理解JVM</a></span></p> </td> > <td> <p><span style="color:#fe2c24;"><a href="https://blog.csdn.net/fmc_wbl/category_8794615.html" title="详细介绍内存区域、字节码、方法底层,类加载和GC等知识" rel="nofollow">详细介绍内存区域、字节码、方法底层,类加载和GC等知识</a></span></p> </td> > </tr> > <tr> > <td></td> > <td> <p><span style="color:#fe2c24;"><a href="https://blog.csdn.net/fmc_wbl/category_11532958.html" title="深入理解高并发编程" rel="nofollow">深入理解高并发编程</a></span></p> </td> > <td> <p><span style="color:#fe2c24;"><a href="https://blog.csdn.net/fmc_wbl/category_11532958.html" title="深入Liunx内核、汇编、C++全方位理解并发编程" rel="nofollow">深入Liunx内核、汇编、C++全方位理解并发编程</a></span></p> </td> > </tr> > <tr> > <td></td> > <td> <p><span style="color:#fe2c24;"><a href="https://blog.csdn.net/fmc_wbl/category_9359373.html" title="Spring源码分析" rel="nofollow">Spring源码分析</a></span></p> </td> > <td> <p><span style="color:#fe2c24;"><a href="https://blog.csdn.net/fmc_wbl/category_9359373.html" title="Spring核心七IOC/AOP等源码分析" rel="nofollow">Spring核心七IOC/AOP等源码分析</a></span></p> </td> > </tr> > <tr> > <td></td> > <td> <p><span style="color:#fe2c24;"><a href="https://blog.csdn.net/fmc_wbl/category_11379053.html" title="MyBatis源码分析" rel="nofollow">MyBatis源码分析</a></span></p> </td> > <td> <p><span style="color:#fe2c24;"><a href="https://blog.csdn.net/fmc_wbl/category_11379053.html" title="MyBatis核心源码分析" rel="nofollow">MyBatis核心源码分析</a></span></p> </td> > </tr> > <tr> > <td></td> > <td> <p><span style="color:#fe2c24;"><a href="https://blog.csdn.net/fmc_wbl/category_8309923.html" title="Java核心技术" rel="nofollow">Java核心技术</a></span></p> </td> > <td> <p><span style="color:#fe2c24;"><a href="https://blog.csdn.net/fmc_wbl/category_8309923.html" title="只讲Java核心技术" rel="nofollow">只讲Java核心技术</a></span></p> </td> > </tr> > </tbody> > </table> [Java]: https://xiaoming.blog.csdn.net/?type=blog
还没有评论,来说两句吧...