Недоступный блок catch: недоступный блок catch для InvalidFormatException - PullRequest
0 голосов
/ 11 февраля 2019

Возникает проблема при чтении данных из файла .xlsx, поскольку ошибка catch (InvalidFormatException e) возвращает исключение как «Недоступный блок catch для InvalidFormatException. Это исключение никогда не вызывается из тела оператора 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 голосов
/ 11 февраля 2019

Это происходит, если 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();
}
0 голосов
/ 11 февраля 2019
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 не выбрасывается из этого метода.

...