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 в конце функции, т. к. он будет видеть, что это недостижимое место.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
Bell Integrator Ульяновск
До 400 000 ₽
Bell Integrator Хабаровск
До 400 000 ₽
Bell Integrator Ижевск
До 400 000 ₽
22 апр. 2024, в 16:15
18000 руб./за проект
23 апр. 2024, в 16:55
10000 руб./за проект