HaNij
@HaNij
Разработчик-программист OnlinePBX

Что будет в этом случае?

У меня есть метод, который читает ячейку в XLSX файле, определяет тип ячейки и возвращает по определённому типу ячейку в String формате. Так же есть try-catch блок, который обрабатывает NullPointerException, который срабатывает когда я читаю не существующую ячейку (не знаю почему именно такой exception, но в документации XLSX написанно именно так), но не суть.

Меня интересует, в каком случае сработает return "ОК", если у меня все типы ячеек и даже ошибки обрабатываются, и ни в каком случаем return "ОК" не должен сработать, хотя IDE требует, чтобы я обязательно поставил этот return.

Не обязательно вдаваться в подробности этого примера.

public String readByRowCell(int row, int cell) {
        try {
            CellType i = sheet.getRow(row).getCell(cell).getCellTypeEnum();
            switch (i) {
                case BLANK:
                    return "пустая ячейка";
                case _NONE:
                    return "Неизвестный тип";
                case STRING:
                    return sheet.getRow(row).getCell(cell).getStringCellValue();
                case NUMERIC:
                    return ((Double) sheet.getRow(row).getCell(cell).getNumericCellValue()).toString();
                case FORMULA:
                    return sheet.getRow(row).getCell(cell).getCellFormula();
                case ERROR:
                    return "Ошибочный тип ячейки";
                case BOOLEAN:
                    return sheet.getRow(row).getCell(cell).getCellFormula();
            }
        } catch (NullPointerException e) {
            return "Ошибка: данная ячейка не существует";
        }
        return "ОК"; // Когда это произойдёт?
    }
  • Вопрос задан
  • 95 просмотров
Решения вопроса 1
@Cheypnow
Когда ни один из case не выполнится
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@arkuzo
Компилятор требует этот return потому что не имеет алгоритма проверки, все ли типы ячеек обрабатываются. Если программа не встретит не перечисленный здесь тип, то и возврата строки 'OK' не будет.
Как вариант, после всех вариантов можно написать ключевое слово ```default:```, в блоке кода которого предусмотреть return. Тогда компилятору не будет ненужен return в конце функции, т. к. он будет видеть, что это недостижимое место.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы