How does a return statement inside a try/catch block work?
function example() {
try {
return true;
}
finally {
return false;
}
}
I’m expecting the output of this function to be true, but instead it is false!
Advertisement
Answer
Finally always executes. That’s what it’s for, which means its return value gets used in your case.
You’ll want to change your code so it’s more like this:
function example() {
var returnState = false; // initialization value is really up to the design
try {
returnState = true;
}
catch {
returnState = false;
}
finally {
return returnState;
}
}
Generally speaking you never want to have more than one return statement in a function, things like this are why.