pureconfig枚举更好的异常

时间:2019-02-28 07:36:39

标签: scala pureconfig enumeratum

将pureconfig与Enumeratum一起使用时,如何获得更好的异常? https://github.com/pureconfig/pureconfig/tree/master/modules/enumeratum

import pureconfig._
import pureconfig.generic.auto._
import pureconfig.module.enumeratum._
import com.typesafe.config.ConfigFactory.parseString
import enumeratum._
import enumeratum.EnumEntry._

object example {
  sealed trait Greeting extends EnumEntry with Snakecase

  object Greeting extends Enum[Greeting] {
    val values = findValues
    case object Hello extends Greeting
    case object GoodBye extends Greeting
    case object ShoutGoodBye extends Greeting with Uppercase
  }
}
import example._
case class GreetingConf(start: Greeting, end: Greeting)

val conf = parseString("""{
  start: hello
  end: SHOUT_GOOD_BYE
}""")
loadConfig[GreetingConf](conf)

但是:

val conf = parseString("""{
      start: helloError
      end: SHOUT_GOOD_BYEFoo
    }""")
    loadConfig[GreetingConf](conf)

由于令人讨厌的异常而失败。而是一条描述性消息,类似于:

Can't parse key start to ENUM type Greeting. Only [hello, SHOUT_GOOD_BYE] are valid values.

会很棒。 我该如何实现?

0 个答案:

没有答案