finally block should not execute return or throw after try-catch block already executes return or throw
- BAD_FINALLY_CONTROL_FLOW
- Error
- Medium
- No tags
This rule applies when finally block executes return or throw after try-catch already executes return or throw.
If the finally block executes return or throw a value, it overwrites the previous result of try-catch block.
Noncompliant Code Example
View with compliant examples side by sidetry {
return foo();
} catch (e) {
return bar();
} finally {
return finalFunc(); // BAD_FINALLY_CONTROL_FLOW alarm because this will overwirte try-catch return value.
}Compliant Code Example
View with noncompliant examples side by sidetry {
return foo();
} catch (e) {
return bar();
} finally {
finalFunc();
}Version
This rule was introduced in DeepScan 1.8.0-beta.