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 "ОК"; // Когда это произойдёт?
    }
  • Вопрос задан
  • 83 просмотра
Решения вопроса 1
@Cheypnow
Когда ни один из case не выполнится
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@arkuzo
Компилятор требует этот return потому что не имеет алгоритма проверки, все ли типы ячеек обрабатываются. Если программа не встретит не перечисленный здесь тип, то и возврата строки 'OK' не будет.
Как вариант, после всех вариантов можно написать ключевое слово ```default:```, в блоке кода которого предусмотреть return. Тогда компилятору не будет ненужен return в конце функции, т. к. он будет видеть, что это недостижимое место.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
First Line Software Будва
от 3 700 до 5 600 $
Sportmaster Lab Волгоград
от 200 000 до 350 000 ₽
Сбер Иннополис
от 130 000 ₽
07 дек. 2022, в 20:05
1000 руб./за проект
07 дек. 2022, в 20:03
15000 руб./за проект
07 дек. 2022, в 19:59
500 руб./за проект