Why does a return in `finally` override `return` value in `try` block?

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.

Leave a Comment