小编A24*_*248的帖子

编译器插入什么异常来处理 switch 表达式中的未知枚举值?

JEP 361引入了 switch 表达式,减少了 switch 常用用法的冗长。

作为此功能的一个特定细节,default不需要为枚举上的 switch 表达式编写类。以下代码编译:

public enum MyEnum {
    ONE,
    TWO;
}

public class OtherClass {
    public static String computeAttribute(MyEnum myEnum) {
        return switch (myEnum) {
            case ONE -> "one";
            case TWO -> "two";
        };
    }
}
Run Code Online (Sandbox Code Playgroud)

目前 switch 表达式是详尽的,但如果单独重新编译枚举,则枚举的新版本可能包含THREEswitch 语句没有预料到的另一个条目(例如)。

JEP 和这篇文章都提到编译器插入了一个默认子句,该子句会引发异常以表明这种不和谐。

我找不到任何说明抛出的异常的确切类型的内容。编译器在枚举值的 switch 表达式中插入的默认子句抛出的异常是什么?

java switch-statement

2
推荐指数
1
解决办法
42
查看次数

标签 统计

java ×1

switch-statement ×1