【发布时间】:2017-10-14 21:53:46
【问题描述】:
我正在尝试读取一个 CSV 文件,然后基于该 CSV 文件创建一个新对象。我可以使用 SuperCSV 库成功地做到这一点,但如果发生错误(例如特定单元格为空),它会引发错误(如预期的那样)。我正在尝试收集 ArrayList 中的所有错误,但现在一旦出现第一个异常,一切都会停止。即使处理器出现错误,我如何让 SuperCSV CsvBeanReader 继续到下一行?我在 try/catch 块中有循环条件。代码如下:
ArrayList<Duplicate> duplicates = new ArrayList<Duplicate>();
ArrayList<BadProperty> invalidProperties = new ArrayList<BadProperty>();
File convFile = new File(file.getOriginalFilename());
convFile.createNewFile();
FileOutputStream fos = new FileOutputStream(convFile);
fos.write(file.getBytes());
fos.close();
ICsvBeanReader beanReader = null;
try {
beanReader = new CsvBeanReader(new FileReader(convFile), CsvPreference.STANDARD_PREFERENCE);
final String[] header = beanReader.getHeader(true);
final CellProcessor[] processors = getProcessors();
Property property;
while ((property = beanReader.read(Property.class, header, processors)) != null) {
// logic in here
}
}
catch(SuperCsvException e) {
invalidProperties.add(new BadProperty(e.getCsvContext()));
System.out.println(e);
}
finally {
if( beanReader != null ) {
beanReader.close();
}
}
【问题讨论】: