kotlin エラー「error: ‘when’ expression must be exhaustive, add necessary ‘xxx’ branch or ‘else’ branch instead」の解決方法

kotlin エラー「error: ‘when’ expression must be exhaustive, add necessary ‘xxx’ branch or ‘else’ branch instead」の解決方法

kotlinで、エラー「error: ‘when’ expression must be exhaustive, add necessary ‘xxx’ branch or ‘else’ branch instead」の解決方法を記述してます。

環境

  • OS windows11 home
  • java 17.0.2
  • kotlin 1.6.10-release-923

エラー全文

以下のコードで発生。

enum class Colors {
    RED, BLUE, GREEN
}

fun getJp(color: Colors) = when (color) {
    Colors.RED -> "赤"
    Colors.BLUE -> "青"
}

fun main() {

    val r = Colors.RED

    val jp = getJp(r)

    println("$r:$jp")

}

エラーメッセージ

error: 'when' expression must be exhaustive, add necessary 'GREEN' branch or 'else' branch instead
fun getJp(color: Colors) = when (color) {
                           ^

原因

関数が「when」を使用して、全列挙値を網羅していないため

対処法

全て使用するか「else」を使用する

enum class Colors {
    RED, BLUE, GREEN
}

fun getJp(color: Colors) = when (color) {
    Colors.RED -> "赤"
    Colors.BLUE -> "青"
    else -> throw Exception("e")
}

fun main() {

    val r = Colors.RED

    val jp = getJp(r)

    println("$r:$jp") // RED:赤

}