项目场景:
某查询接口报错
java.util.NoSuchElementException: No value present
问题描述:
在导出一份文件时,底层查询接口报错,报错信息:java.util.NoSuchElementException: No value present ,报错代码↓
//枚举类根据code拿description的方法
public static String getDes(Integer byDocnumber) {
return Stream.of(values()).filter(item -> item.code == byDocnumber).findFirst().get().description;
}
原因分析:
这个方法根据枚举值拿描述报错,报了个no such element 类似于空指针之类的问题,问题出在表中有些旧数据,它们的值不在枚举值的合法范围内,也没有给对应的解决方案,而是直接拿里面的description,导致出现该报错
解决方案:
public static String getDesc(Integer status){
for (PaymentStatus paymentStatus: values()) {
if (paymentStatus.getCode() == (status)){
return paymentStatus.getDescription();
}
}
return "";
}
无对应枚举值的描述时,返回一个空串即可解决该问题。