alibaba / easyexcel

快速、简洁、解决大文件内存溢出的java处理Excel工具
https://easyexcel.opensource.alibaba.com
Apache License 2.0
32.09k stars 7.5k forks source link

使用doReadAllSync读取Excel无法忽略异常 #3874

Open WingGao opened 2 months ago

WingGao commented 2 months ago

触发场景描述

使用doReadAllSync读取Excel无法忽略异常

触发Bug的代码

// read代码
EasyExcel.read(file.inputStream,MyDto::class.java,  MyListener())
            .headRowNumber(2)
            .doReadAllSync<MyDto>()

// MyListener
class MyListener() : AnalysisEventListener<MyDto>() {
    override fun onException(exception: Exception, context: AnalysisContext) {
        // do somthing
    }
}

提示的异常或者没有达到的效果

从代码来说,这里的异常被忽略掉了,应该继续运行,但实际会被后面的SyncReadListener给抛出。

https://github.com/alibaba/easyexcel/blob/ea64d8a4d6d40e58d5603cea284d09e619cb5e04/easyexcel-core/src/main/java/com/alibaba/excel/read/processor/DefaultAnalysisEventProcessor.java#L81

因为使用doReadAllSync时,readListenerList有3个

  1. ModelListener
  2. MyListener
  3. SyncReadListener 错误在1和2的时候被忽略,但是在SyncReadListener中没有被忽略