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.