Мы используем куки, чтобы пользоваться сайтом было удобно.
Хорошо
to the top

Вебинар: Использование PVS-Studio при разработке встраиваемых систем - 14.05

menu mobile close menu
Проверка проектов
Дополнительная информация
toggle menu Оглавление

V6135. The return value of the 'finally' block overrides return values of 'try' and 'catch' blocks.

05 Май 2026

Анализатор обнаружил ошибку, связанную с перезаписью возвращаемого значения, полученного из блока 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;
}

Данная диагностика классифицируется как: