[alibaba/easyexcel]重写了AnalysisEventListener的onException方法后,没抛出异常,但是碰到格式转化异常之后,程序还是直接停止运行了

2024-05-11 308 views
8

重写了AnalysisEventListener的onException方法后,没抛出异常,但是碰到格式转化异常之后,程序还是直接停止运行了;

回答

7

我想要的效果是遇到异常之后继续读取下一行,下面是我的代码 /**

  • 在转换异常 获取其他异常下会调用本接口。抛出异常则停止读取。如果这里不抛出异常则 继续读取下一行。
  • @param exception
  • @param context
  • @throws Exception */ @Override public void onException(Exception exception, AnalysisContext context) { LOGGER.error("解析失败,但是继续解析下一行:{}", exception.getMessage()); // 如果是某一个单元格的转换异常 能获取到具体行号 // 如果要获取头的信息 配合invokeHeadMap使用 if (exception instanceof ExcelDataConvertException) { ExcelDataConvertException excelDataConvertException = (ExcelDataConvertException)exception; LOGGER.error("第{}行,第{}列解析异常", excelDataConvertException.getRowIndex(), excelDataConvertException.getColumnIndex()); } } 下面是我的运行结果 image
3

可以看到此处我的程序直接停止运行了,我看了demo说的是支持继续读取下一行的,我的版本是2.2.10

5

可以看到此处我的程序直接停止运行了,我看了demo说的是支持继续读取下一行的,我的版本是2.2.10

你应该使用的是readSync方法,使用同步的这种方式,其内部自定义了一个listener,默认是抛出异常的

6

数据量大的情况下是推荐用doRead方法吗?确实,使用doReadSync方法会抛出异常

4

请问,使用readSync方法的异常可以重写或者如何实现不中断呢?