Невозможно проверить недостижимый оператор возврата после блока try catch - PullRequest
0 голосов
/ 31 марта 2020

Я написал логическую функцию.

    public boolean func(String someString) {
    try {
        if (someCondition) {
            return true;
        }
    } catch (Exception e) {
        return false;
    }
    return false;
}

Однако последнее возвращение недоступно. Но я написал это, чтобы удовлетворить функцию. Когда я писал тестовые примеры для этой функции, не было способа охватить этот последний результат в приведенном выше коде. Так есть ли способ изменить функцию, чтобы удалить недоступный код. Заранее благодарю.

Ответы [ 3 ]

2 голосов
/ 31 марта 2020

Последнее возвращение недоступно

Это неверно.

Тщательно подумайте о , когда будет достигнуто последнее возвращение. Это будет достигнуто только тогда, когда:

  • try не выдает исключение (в противном случае оно вернется в catch), а
  • не вернется в try. (или, если говорить более технически, «блок try завершается нормально»)

Когда он вернется в try? Поскольку оператор if существует, а else отсутствует, он вернется в try, только если someCondition истинно. Если someCondition ложно, блок try завершается нормально и будет достигнут последний возврат.

Вам просто нужно подумать о тестовом примере, где someCondition ложно!

0 голосов
/ 31 марта 2020

Переместить возврат вверх в блоке try следующим образом:

public boolean func(String someString) {
    try {
        if (someCondition) {
            return true;
        }
        return false;
    } catch (Exception e) {
        return false;
    }
}
0 голосов
/ 31 марта 2020

Сделай так:

public boolean func(String someString) {
boolean bool=false;
    try {
        if (someCondition) {
            bool=true
        }
    } catch (Exception e) {
       e.printStackTrace()
    }
    return bool;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...