如何在Java中处理Enum实例中的异常?我有一个枚举类如下:
public enum TagEnum {
EDIT_ACCESS("feature.edit", GlobalAccess.getEditStatus());
private String key;
private Boolean featureStatus;
private TagEnum(String key, Boolean status) {
this.key=key;
this.featureStatus=status;
}
}
在getEditStatus()
类的上述场景GlobalAccess
方法抛出异常:
public static Boolean getEditStatus() throws Exception {
...
}
上面TagEnum
枚举产生了编译错误,因为枚举实例无法处理GlobalAccess.getEditStatus()
方法。请指导我如何传递抛出异常的java方法,作为Enum实例中的参数。
答案 0 :(得分:1)
你不能在类成员声明中处理异常,并且在这种意义上声明enum
与声明一个类很相似。
您必须将GlobalAccess.getEditStatus()
调用移动到块,构造函数或方法中,以处理抛出的任何异常。例如,您可以将其移动到构造函数中,如此;
private TagEnum(String key) {
this.key=key;
try{
this.featureStatus = GlobalAccess.getEditStatus();
} catch(Exception e) {
// Handle the exception here.
}
}
或者Initialization Blocks或多或少地创建了这个问题。允许您在类(或枚举)成员声明期间处理逻辑,错误和异常。
答案 1 :(得分:0)
您可以实现一个能够处理此异常的专用方法,例如:
public enum TagEnum {
EDIT_ACCESS("feature.edit") {
@Override
protected Boolean initFeatureStatus() {
try {
return GlobalAccess.getEditStatus();
} catch (Exception e) {
// handle it there
return null;
}
}
};
private String key;
private Boolean featureStatus;
private TagEnum(String key) {
this.key = key;
this.featureStatus = initFeatureStatus();
}
protected abstract Boolean initFeatureStatus();
}