Добавление блока finally приводит к тому, что IntelliJ сообщает, что «переменная не может быть назначена» - PullRequest
0 голосов
/ 07 июня 2018

Вставка следующего кода Groovy в IntelliJ IDEA:

String x

switch ("hi") {
    case "hi":
        x = "data" // Assignment is not used
        break
    default:
        throw new RuntimeException()
}

/*if ("hi" == "hi") {
    x = "data"
} else {
    throw new RuntimeException()
}*/

try {
    println x // Variable 'x' might not be assigned
} finally {
/*} catch (ignored) {*/
    println x
}

При первом println x в операторе try я получаю предупреждение о проверке "Переменная 'x' может быть не назначена".

Я запутался в двух отношениях:

  • , если вы замените оператор switch функционально эквивалентным оператором if / else, предупреждение больше не будет отображать
  • ifвы заменяете finally на catch (ignored), предупреждение больше не показывает

Для меня такое поведение не имеет смысла.Может кто-нибудь объяснить, почему предупреждение отображается в первую очередь и почему замена вышеперечисленного устраняет его?

Я использую IntelliJ v2018.1.2 (Ultimate) и плагин Groovy v9.0.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...