我目前正在处理CSV导出。我正在使用以下代码从属性文件中获取标头-
String[] csvHeader = exportables.get(0).getCSVHeaderMap(currentUser).keySet().stream().
map(s ->messageSource.getMessage("report."+s, null, locale)).toArray(String[]::new);
上面的代码运行良好。但是我需要找到一种方法来处理异常,并且还可以从另一个文件中获取数据(如果在上述文件中找不到该数据)。我希望使用下面的代码-
try{
exportables.get(0).getCSVHeaderMap(currentUser).keySet().stream().
map(s ->messageSource.getMessage("report."+s, null, locale)).toArray(String[]::new);
}catch(NoSuchMessageException e){
// code to work over lacking properties
}
我想在catch块中捕捉's'元素(或以其他好的方式)。这样我就可以从另一个文件中获取它,并将其返回值添加到当前的csvHeader
中。
答案 0 :(得分:3)
一种方法是为每个元素设置一个try catch块,例如:
exportables.get(0).getCSVHeaderMap(currentUser).keySet().stream().
map(s -> {
String result;//Put the class to which you map
try{
result = messageSource.getMessage("report."+s, null, locale);
}catch(NoSuchMessageException e){
// code to work over lacking properties here you have access to s
}
return result;
}
).toArray(String[]::new);
另一种解决方案是检查特定问题,然后无需捕获异常。例如,如果s
为null,那么您想从另一个地方获取数据:
exportables.get(0).getCSVHeaderMap(currentUser).keySet().stream().
map(s -> {
String result;//Put the class to which you map
if(null == s)// Some condition that you want to check.
{
//get info from another place
//result = ....
}
else
{
result = messageSource.getMessage("report."+s, null, locale);
}
return result;
}
).toArray(String[]::new);