[alibaba/easyexcel]EasyExcel.read 同一个流 两次,报错提示不对

2024-05-21 947 views
7

触发场景描述 EasyExcel.read 同一个流 两次,报错提示不对 触发Bug的代码 缺少捕获IOexception catch (IOException e) { if (excelType != null) { return excelType; } throw new ExcelCommonException( "inputStream is closed,maybe it is have been read", e); }

回答

7

@zw3e InputStream流只能够被利用一次,无法重复读

7

@zhuangjiaju 对的,流只能够被用一次, 只是esayexcel报的exception提示不对,看了源码少捕获一个IOexception

8

@zw3e 贴一下具体的代码吧

3

com.alibaba.excel.support.ExcelTypeEnum 这个类第41行 是if (file == null && inputStream == null) ,应该还需要判断下inputStream.available() ,或者底下的try catch 捕获IOException,里面给出具体提示,现在每次都是进85行的Exception,

5

@zw3e 可以优化一下

6

非常感谢。 由于IOException 是一个非常常规的异常,所以不再封装。一般异常处理都不会再封装,只有easyexcel内部业务异常才会抛出封装过的异常。