gpt4 book ai didi

java - Apache POI,处理 WorkbookFactory.create() 异常以获得更好的用户体验

转载 作者:行者123 更新时间:2023-12-02 09:03:53 32 4
gpt4 key购买 nike

我正在使用 Apache POI 解析和创建 excel 文件,我正在处理 base64 字符串(用户 excel 输入文件内容)并将其转换为 ByteArrayInputStream :

ByteArrayInputStream 流 = new ByteArrayInputStream(Base64.getDecoder().decode(base64String));

然后创建一个工作簿:

try (Workbook wb = WorkbookFactory.create(stream)) {

//parsing the file content ...

} catch (IOException e) {
log.error("hopefully something clear", e);
throw new CustomException(Errors.CUSTOM_ERROR_CODE_FOR_THIS_PARTICULAR_ISSUE);
}

问题是,我不知道为什么 create 方法会抛出异常,文档只是说

Throws: java.io.IOException - if an error occurs while reading the data (link)

而且我不想向用户显示“解析文件时出错”,如果文件已加密,我已经处理了这种情况,但我陷入了困境

最佳答案

  1. 从底层异常复制实际错误消息:

     try (Workbook wb = WorkbookFactory.create(stream)) {     
    //parsing the file content ...
    } catch (IOException e) {
    log.error("hopefully something clear", e);
    throw new CustomException(e.getMessage(),
    Errors.CUSTOM_ERROR_CODE_FOR_THIS_PARTICULAR_ISSUE);
    }
  2. 为了获得更好的用户体验,您肯定需要处理数据为空或损坏的情况:

    final String base64String = .. ;
    //StringUtils class is from Apache Commons Lang
    if (StringUtils.isEmpty(base64String) {
    throw new CustomException(Errors.CUSTOM_ERROR_NO_DATA);
    }

    byte[] bytes;
    try {
    bytes = Base64.getDecoder().decode(base64String);
    } catch (Exception e) {
    throw new CustomException(Errors.CUSTOM_ERROR_NON_BASE64_DATA);
    }

    try (ByteArrayInputStream stream = new ByteArrayInputStream(bytes);) {
    .. // workbook processing
    }

关于java - Apache POI,处理 WorkbookFactory.create() 异常以获得更好的用户体验,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59971977/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com