Apache POI退出而不抛出异常

时间:2012-12-06 07:07:02

标签: java apache apache-poi

首先,下面的代码暂时没有问题。 我收到一位同事的excel文件,我通过这个程序阅读并上传。 最近,同事被替换了,我从另一个人那里收到了这些文件。 我会和他一起查看他对excel文件做了什么。

无论如何,我从新同事那里得到的第一个excel文件让我感到沮丧。 以下代码在WorkbookFactory.create(fis)来电时退出。没有异常被抛出 程序直接进入finally条款...

try {
        fis = new FileInputStream(f);            

        Workbook wb = WorkbookFactory.create(fis);

        Sheet ws = wb.getSheetAt(0);
        if (ws == null) {
            throw new ParseException("No sheet found on index 0", 1);
        }

        Iterator rowIt = ws.rowIterator();

        while (rowIt.hasNext()) {
            Row row = (Row) rowIt.next();
            if (row.getRowNum() != 0 && isArticleRow(row)) {
                Article article = parseArticleData(row);

                if (article != null) {
                    priceList.getArticles().add(article);
                }
            }
        }

        String vendorNumber = getVendorNumber(priceList);
        priceList.setVendorNumber(vendorNumber);

        priceList.setReadCorrectly(true);
        System.out.println("DONE");

    } catch (Exception e) {
        System.out.println(e.getMessage());

        _log.error(e.getMessage());
        if (priceList != null) {
            priceList.setReadCorrectly(false);
        }

    } finally {
        if (fis != null) {
            fis.close();
        }
        return priceList;
    }

我尝试过调试,但是我遇到了同样的行为,没有 抛出异常,我不知道该怎么办。

提前感谢您的反馈。

1 个答案:

答案 0 :(得分:0)

Catch Throwable并查看而不是Exception。它应该工作。

} catch (Throwable e) {
    System.out.println(e.getMessage());

    _log.error(e.getMessage());
    if (priceList != null) {
        priceList.setReadCorrectly(false);
    }

}