Вебинар: Стратегия без иллюзий: как превращать цели в результаты - 19.08
Анализатор обнаружил ошибку, связанную с перезаписью возвращаемого значения, полученного из блока try / catch, в блоке finally.
Рассмотрим пример:
try {
return getResponse(....);
} catch (Exception e) {
....
return -1;
} finally {
....
return 0; // <=
}
При выполнении инструкции return из блока try или catch поток исполнения перед выходом из метода зайдет в блок finally и выполнит все инструкции оттуда. В результате, последней выполненной инструкцией станет return из блока finally, которая перезапишет возвращаемое значение из блока try или catch.
Исправленный вариант может выглядеть следующим образом:
int answer = 0;
try {
answer = getResponse(....);
....
} catch (Exception e) {
....
answer = -1;
} finally {
....
return answer;
}
Диагностическое правило классифицируется как:
|
Была ли полезна эта страница документации?
Мы ответим вам на:
Если вы так и не получили ответ, пожалуйста, проверьте, отфильтровано ли письмо в одну из следующих стандартных папок: