无法访问的捕获块:InvalidFormatException的无法访问的捕获块

时间:2019-02-11 09:31:56

标签: java maven selenium-webdriver

我从.xlsx文件读取数据时遇到问题,因为catch(InvalidFormatException e)返回异常的错误为“ InvalidFormatException的Unreachable catch块。永远不会从try语句主体中抛出此异常”

我使用了我认为有必要的openxml4j导入

public static Object[][] getTestData(String sheetname) {
        FileInputStream file = null;
        try {
            file = new FileInputStream(TEST_DATA_SHEET_PATH);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        try {
            book = WorkbookFactory.create(file);
        } catch (InvalidFormatException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

预计InvalidFormatException应该没有错误,并且.xlsx文件中的数据应该为红色

2 个答案:

答案 0 :(得分:1)

try {
     book = WorkbookFactory.create(file);
    } catch (InvalidFormatException e) {
     e.printStackTrace();
}

此try块中的代码不会引发InvalidFormatException。这就是为什么您收到错误消息的原因。

也许您打算在其他地方使用该catch块。

来自文档:

https://poi.apache.org/apidocs/dev/org/apache/poi/ss/usermodel/WorkbookFactory.html#create-java.io.File-

这是方法签名:

public static Workbook create(java.io.File file)
                       throws java.io.IOException,
                       EncryptedDocumentException

从上面可以看到,此方法不会引发任何InvalidFormatException

答案 1 :(得分:0)

如果IDE无法看到或理解给定代码段中引发了特定(InvalidFormatException)异常,则会发生这种情况。 您可以通过加入try块来简单地解决此问题:

try {
   book = WorkbookFactory.create(file);
} catch (Exception e) {
   e.printStackTrace();
}

使用这种方法,如果错误处理允许,您还可以像这样清理并加入代码:

try {
   file = new FileInputStream(TEST_DATA_SHEET_PATH);
   book = WorkbookFactory.create(file);
} catch (Exception e) {
   e.printStackTrace();
}