如何从枚举构造函数中引发异常?
2022-09-03 12:58:21
如何从枚举构造函数引发异常?例如:
public enum RLoader {
INSTANCE;
private RLoader() throws IOException {
....
}
}
产生错误
未处理的异常类型 IOException
如何从枚举构造函数引发异常?例如:
public enum RLoader {
INSTANCE;
private RLoader() throws IOException {
....
}
}
产生错误
未处理的异常类型 IOException
由于实例是在静态初始值设定项中创建的,因此请改为抛出 ExceptionInitializerError。
我有一个案例,我想在某些设置类中使用枚举作为键。数据库将存储一个字符串值,允许我们更改枚举常量而不必对数据库进行扩展(我知道有点丑陋)。我想在枚举的构造函数中抛出一个运行时异常,作为一种监管字符串参数长度的方法,以避免在我自己可以轻松检测到它时命中数据库,然后得到约束冲突。
public enum GlobalSettingKey {
EXAMPLE("example");
private String value;
private GlobalSettingKey(String value) {
if (value.length() > 200) {
throw new IllegalArgumentException("you can't do that");
}
this.value = value;
}
@Override
public String toString() {
return value;
}
}
当我为此创建一个快速测试时,我发现抛出的异常不是我的,而是 ExceptionInitializerError。
也许这很愚蠢,但我认为对于想要在静态初始值设定项中引发异常的人来说,这是一个相当有效的场景。