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

Анализатор обнаружил ошибку, связанную с перезаписью возвращаемого значения, полученного из блока try / catch, в блоке finally\.

Рассмотрим пример:

```cpp
try {
  return getResponse(....);
} catch (Exception e) {
  ....
  return -1;
} finally {
  ....
  return 0; // <=
}
```

При выполнении инструкции `return` из блока `try` или `catch` поток исполнения перед выходом из метода зайдет в блок `finally` и выполнит все инструкции оттуда\. В результате, последней выполненной инструкцией станет `return` из блока `finally`, которая перезапишет возвращаемое значение из блока `try` или `catch`\.

Исправленный вариант может выглядеть следующим образом:

```cpp
int answer = 0;
try {
  answer = getResponse(....); 
  ....
} catch (Exception e) {
  ....
  answer = -1; 
} finally {
  .... 
  return answer;
}
```