目 录CONTENT

文章目录

AlibabaEasyExcel的异常处理如何停止往下执行

筱晶哥哥
2022-01-14 / 0 评论 / 0 点赞 / 25 阅读 / 2439 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2024-03-23,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

之前在做项目的时候,需要用到 easyexcel 导入部分数据,但是在处理过程中,遇到异常好像没有停止invoke。

其说明文档onException方法中没有写明抛哪种错误。

我以为抛Exception就可以停住了,其实是不行的。

百度了一下,没找到答案。

请教版主后,知道需要抛如下错误才可停止继续往下invoke。

throw new ExcelAnalysisStopException();

备注一下,以免忘了。


/**
  * 在转换异常 获取其他异常下会调用本接口。
  * 抛出异常则停止读取。
  * 如果这里不抛出异常则继续读取下一行。
  * @param exception
  * @param context
  * @throws Exception
  */
@Override
public void onException(Exception exception, AnalysisContext context) {
    LOGGER.error("解析失败,但是继续解析下一行:{}", exception.getMessage());
    // 如果是某一个单元格的转换异常 能获取到具体行号
    // 如果要获取头的信息 配合invokeHeadMap使用
    int col = 0,row =0;
    String title = "";
    if (exception instanceof ExcelDataConvertException) {
        ExcelDataConvertException excelDataConvertException = (ExcelDataConvertException)exception;
        col = excelDataConvertException.getColumnIndex();
        row = excelDataConvertException.getRowIndex();
        LOGGER.error("第{}行,第{}列解析异常,数据为:{}", row, col , excelDataConvertException.getCellData());
        title = this.headMap.get(col);
        LOGGER.info("出错标题列名称 -- "+ title);
    }
    //
    throw new ExcelAnalysisStopException("出错行:"+row+", 出错列:"+title);
}
0

评论区