You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Scala Month函数运行报No enum constant枚举错误如何修复

问题修复方案

错误根因

  • Month.valueOf()方法要求入参必须是java.time.Month枚举中预设的常量名,合法值为全大写的JANUARY到DECEMBER,传入不存在的名称就会抛出IllegalArgumentException
  • 你当前运行环境的month系统属性值为UNDEFINED,不属于枚举合法值,因此触发报错

修复方案

代码层面增加非法值兼容逻辑即可,优化点包括:增加入参预处理(去空格、转大写)、异常捕获、非法值降级,修复后的完整代码如下:

import java.time.Month
import java.util.Calendar
object Test {
  val FINAL_MONTH_NBR = 12

  def main(args: Array[String])
  {
    month()
  }
  def month(): Int = {
    val month = System.getProperty("month")
    if(month == null) {
      Calendar.getInstance().get(Calendar.MONTH)
    }
    else {
      try {
        // 先做去空格、转大写处理,提升合法值的匹配兼容性
        val monthValue = Month.valueOf(month.trim.toUpperCase)
        if (monthValue == Month.JANUARY) {
          FINAL_MONTH_NBR
        }
        else {
          monthValue.getValue - 1
        }
      } catch {
        // 非法值场景走降级逻辑,和属性为null的逻辑保持一致,也可按业务需求返回指定默认值
        case _: IllegalArgumentException => Calendar.getInstance().get(Calendar.MONTH)
      }
    }
  }
}

如果业务要求必须传入合法的月份枚举值,也可以在校验失败时抛出明确的业务提示错误,不需要走降级逻辑,可根据实际需求调整。

内容的提问来源于stack exchange,提问作者palamuGuy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 00:48:03